Wpf usercontrol依赖项属性绑定

时间:2014-07-10 08:20:10

标签: wpf mvvm binding dependency-properties

在我的主窗口中,我有一个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>

1 个答案:

答案 0 :(得分:1)

视图模型应该中包含DependencyProperty,并且当然扩展DependencyObject类,因为它们是与UI相关的类。我确信你和其他许多人一直对微软措辞严重的错误感到困惑:

  

'绑定'只能在DependencyProperty的{​​{1}}上设置。

这实际上只是指DependencyObject s和数据元素侧的UI元素方面。对于数据绑定数据对象,我们实现了INotifyPropertyChanged interface,它为Binding提供了类似的属性更改通知功能。

那么,您是否已将DependencyProperty设置为实现Window.DataContext的视图模型的实例,并在其中声明了一个名为INotifyPropertyChanged的属性,那么您的代码就可以正常运行:

Message