【发布时间】:2016-03-23 12:44:10
【问题描述】:
更改独立窗口的用户控件后,我需要修复绑定。基本上现在我有两个使用 ShowDialog() 的窗口,我将新窗口连接到新数据上下文
<Window.DataContext>
<ViewModels:DatabaseDesignViewModel/>
</Window.DataContext>
但是现在我无法将按钮绑定到来自主窗口的根视图中的命令。
这就是我试图在没有运气的情况下解决它的方法:
<MenuItem Header="Go to design mode"
Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Views:RootView}}, Path=DataContext.OKCommand}"/>
【问题讨论】:
-
MenuItem 是 ContextMenu 的一部分吗?
-
FindAncestor将不起作用,因为由于您移至独立窗口,RootView(据我了解,父窗口或它的一部分)不是“祖先”。每个窗口都有自己的逻辑和可视化树。 -
@Dennis 是否有办法访问这些命令,如果它们位于不同的逻辑和可视树中
-
@user5606505:很难说,因为我不知道,你如何创建你的视图模型和窗口。首先,当您需要来自父视图模型的命令时,这可能是一些架构问题。其次,如果您真的需要它,我会将
MainViewModel Parent { get; }之类的东西带入子视图模型。这将使绑定变得微不足道。
标签: c# wpf xaml data-binding binding