繁体   English   中英

如何绑定财产?

[英]How can I bind a property?

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

<m:Map 
  x:Name="MyMap"
  Grid.Row="1"            
  CredentialsProvider="KEY"  
  ZoomLevel="{BINDING MapZoomLevel}"
  Mode="Road">

后面的代码:

private int mapZoomLevel;
public int MapZoomLevel { get { return mapZoomLevel; } set { mapZoomLevel = value; NotifyOfPropertyChange(() => MapZoomLevel); } }

但这不是可行的。 我猜是因为我已经通过设置x:Name绑定了地图。 问题是我无法在视图中进行某些设置,所以无法删除x:Name,但是有解决方法吗? 我希望能够以某种方式绑定地图的ZoomLevel

为了进行数据绑定,您需要做一些事情:

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

DataContext = new SomeTypeOfViewModel();

如果在后面的代码中声明该属性,则可以这样:

DataContext = this;

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

3)你必须提供一个有效的Binding Path ...... BINDING无效的,所以适当的Binding Path你可能会这样(取决于你已经宣布你的财产):

<m:Map x:Name="MyMap" Grid.Row="1" CredentialsProvider="KEY" 
    ZoomLevel="{Binding MapZoomLevel}" Mode="Road">

请阅读MSDN上的“ 数据绑定概述”页面以获取全文。

根据您的标签,您正在与此一起使用Caliburn Micro? 已使用框架中的viewmodel / view设置了数据上下文。 需要ZoomLevel =“ {Binding MapZoomLevel,Mode = TwoWay}”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM