窗口级依赖属性(视图后面的代码),它可以绑定到视图的XAML中吗?

时间:2014-10-29 13:36:17

标签: c# wpf xaml mvvm mvvm-light

我在视图后面的代码(.cs)中定义了一个依赖项属性,我想从我的视图模型中绑定一个值。我希望我可以转到.xaml并在定义Window的顶部绑定它,并填充其他属性,如DataContext,Title等。这似乎是不可能的,因为那里出现的唯一属性是基本Window类型,而不是我正在使用的视图的特定实例。

我想要这样做的原因是,如果我的ViewModel定义了一个命令,我希望能够从我视图后面的代码中启动该命令。我不想将DataContext强制转换为特定的ViewModel类型来获取命令的句柄。我显然可以发送一条消息(我正在使用MVVM Light)来执行此操作,看起来好像我可以通过依赖属性进行消息传递。

1 个答案:

答案 0 :(得分:3)

您可以通过Style setter设置绑定,如下所示。请注意Setter Property中的完全限定的属性名称。您也可以将local:MainWindow设置为样式TargetType以避免使用完全限定的属性名称,但XAML Designer可能会抱怨这一点。

<Window x:Class="SomeNamespace.MainWindow"
        xmlns:local="clr-namespace:SomeNamespace" ...>
    <Window.Style>
        <Style>
            <Setter Property="local:MainWindow.SomeProperty"
                    Value="{Binding ViewModelProperty}"/>
        </Style>
    </Window.Style>
    ...
</Window>