【问题标题】:Window level dependency property (view's code behind), can it be bound to in XAML of the view?窗口级依赖属性(视图的代码在后面),它可以绑定到视图的 XAML 中吗?
【发布时间】:2014-10-29 13:36:17
【问题描述】:
我在视图的代码 (.cs) 中定义了一个依赖属性,我想将我的视图模型中的一个值绑定到它。我希望我可以转到 .xaml 并在定义 Window 并填充其他属性(如 DataContext、Title 等)的顶部绑定到它。这似乎是不可能的,因为那里显示的唯一属性是基本 Window 类型的属性,而不是我正在使用的视图的特定实例。
我想这样做的原因是,如果我的 ViewModel 定义了一个命令,我希望能够从我的视图后面的代码中启动该命令。我不想将 DataContext 转换为特定的 ViewModel 类型来获取命令的句柄。我显然可以发送一条消息(我正在使用 MVVM Light)来执行此操作,似乎我可以在不通过依赖属性发送消息的情况下执行此操作。
【问题讨论】:
标签:
c#
wpf
xaml
mvvm
mvvm-light
【解决方案1】:
您可以通过样式设置器设置绑定,如下所示。请注意 Setter Property 中的完全限定属性名称。您也可以将 local:MainWindow 设置为样式的 TargetType 以避免完全限定的属性名称,但 XAML 设计器可能会抱怨这一点。
<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>