我如何绑定一个属性?

时间:2014-07-10 07:14:25

标签: c# wpf caliburn.micro

我在我的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

2 个答案:

答案 0 :(得分:0)

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

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

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}”。