我在我的WPF应用程序中使用了Bing地图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
发布于 2014-07-10 16:03:41
为了进行数据绑定,您需要做几件事:
1)必须将UserControl或Window的DataContext设置为包含要绑定的属性的对象。如果该对象是一个单独的视图模型类,则可能是这样(在后面的UserControl或Window代码中):
DataContext = new SomeTypeOfViewModel();或者,如果属性是在后面的代码中声明的,则如下所示:
DataContext = this;2)您必须实现INotifyPropertyChanged interface或实现DependencyProperty-您似乎已经实现了INotifyPropertyChanged接口,但您必须确保它是正确的。
3)您必须提供有效的Binding Path... BINDING无效,因此适用于您的Binding Path可能是这样的(取决于您在何处声明了您的属性):
<m:Map x:Name="MyMap" Grid.Row="1" CredentialsProvider="KEY"
ZoomLevel="{Binding MapZoomLevel}" Mode="Road">请阅读MSDN上的Data Binding Overview页面以了解完整的故事。
发布于 2014-07-11 06:16:34
基于您的标签,您正在使用Caliburn Micro与此?Datacontext已经通过框架中的viewmodel/view进行了设置。绑定“{ZoomLevel= MapZoomLevel,Mode=TwoWay}”是必需的。
https://stackoverflow.com/questions/24670545
复制相似问题