在我的主窗口中,我有一个UserControl,ViewModel已经获得了依赖属性"消息",我试图将依赖属性绑定到主窗口的ViewModel的属性,但实际上它不起作用,有没有任何污染,或者它在一般情况下是不可能的?
主窗口的内容:
<local:MessageLayer>
<local:MessageLayer.DataContext>
<local:MessageBoxViewModel Message="{Binding RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}, Path=DataContext.Message}"/>
</local:MessageLayer.DataContext>
</local:MessageLayer>
答案 0 :(得分:1)
视图模型应该不中包含DependencyProperty
,并且当然不扩展DependencyObject
类,因为它们是与UI相关的类。我确信你和其他许多人一直对微软措辞严重的错误感到困惑:
'绑定'只能在
DependencyProperty
的{{1}}上设置。
这实际上只是指DependencyObject
s和不数据元素侧的UI元素方面。对于数据绑定数据对象,我们实现了INotifyPropertyChanged
interface,它为Binding
提供了类似的属性更改通知功能。
那么,您是否已将DependencyProperty
设置为实现Window.DataContext
的视图模型的实例,并在其中声明了一个名为INotifyPropertyChanged
的属性,那么您的代码就可以正常运行:
Message