首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绑定属性?

如何绑定属性?
EN

Stack Overflow用户
提问于 2014-07-10 15:14:25
回答 2查看 67关注 0票数 0

我在我的WPF应用程序中使用了Bing地图SDK,XAML如下所示:

代码语言:javascript
复制
<m:Map 
  x:Name="MyMap"
  Grid.Row="1"            
  CredentialsProvider="KEY"  
  ZoomLevel="{BINDING MapZoomLevel}"
  Mode="Road">

后面的代码:

代码语言:javascript
复制
private int mapZoomLevel;
public int MapZoomLevel { get { return mapZoomLevel; } set { mapZoomLevel = value; NotifyOfPropertyChange(() => MapZoomLevel); } }

但这并不管用。我猜是因为我已经通过设置x:Name绑定了映射。问题是我不能删除x:Name,因为我在视图中做了一些设置,但是有解决办法吗?我希望能够以某种方式绑定地图的ZoomLevel

EN

回答 2

Stack Overflow用户

发布于 2014-07-10 16:03:41

为了进行数据绑定,您需要做几件事:

1)必须将UserControlWindowDataContext设置为包含要绑定的属性的对象。如果该对象是一个单独的视图模型类,则可能是这样(在后面的UserControlWindow代码中):

代码语言:javascript
复制
DataContext = new SomeTypeOfViewModel();

或者,如果属性是在后面的代码中声明的,则如下所示:

代码语言:javascript
复制
DataContext = this;

2)您必须实现INotifyPropertyChanged interface或实现DependencyProperty-您似乎已经实现了INotifyPropertyChanged接口,但您必须确保它是正确的。

3)您必须提供有效的Binding Path... BINDING无效,因此适用于您的Binding Path可能是这样的(取决于您在何处声明了您的属性):

代码语言:javascript
复制
<m:Map x:Name="MyMap" Grid.Row="1" CredentialsProvider="KEY" 
    ZoomLevel="{Binding MapZoomLevel}" Mode="Road">

请阅读MSDN上的Data Binding Overview页面以了解完整的故事。

票数 0
EN

Stack Overflow用户

发布于 2014-07-11 06:16:34

基于您的标签,您正在使用Caliburn Micro与此?Datacontext已经通过框架中的viewmodel/view进行了设置。绑定“{ZoomLevel= MapZoomLevel,Mode=TwoWay}”是必需的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24670545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档