[英]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)您必须将UserControl
或Window
的DataContext
设置为包含要绑定到的属性的对象。 如果该对象是一个单独的视图模型类,则可能是这样的(在后面的UserControl
或Window
代码中):
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.