我在我的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
答案 0 :(得分:0)
为了数据绑定,您需要做一些事情:
1)您必须将DataContext
或UserControl
的{{1}}设置为包含要绑定的属性的对象。如果该对象是一个单独的视图模型类,那可能是这样的(在后面的Window
或UserControl
代码中):
Window
或者像这样,如果属性在中声明背后的代码:
DataContext = new SomeTypeOfViewModel();
2)您必须实施INotifyPropertyChanged
interface或实施DataContext = this;
- 您似乎已实施DependencyProperty
界面,但您必须确保已正确完成此操作。
3)您必须提供有效的INotifyPropertyChanged
... Binding Path
不有效,因此适合您的BINDING
可能就是这个(取决于你宣布你的财产的地方):
Binding Path
请阅读MSDN上的Data Binding Overview页面了解完整故事。
答案 1 :(得分:0)
根据您使用Caliburn Micro的标签吗?已经使用框架中的viewmodel / view设置了Datacontext。需要ZoomLevel =“{Binding MapZoomLevel,Mode = TwoWay}”。