将命令绑定到子窗口的datacontext

时间:2011-05-18 19:28:29

标签: wpf mvvm binding command

我有一个名为MAINWINDOW的窗口,它有一个工具栏和一个框架。在框架内部显示一个名为HOMEPAGE的页面。此页面有一个树视图,其中显示了菜单选项。当用户单击某个节点时,相应的表单(页面)将显示在HOMEPAGE中的边框内,使用Border.Content属性。我在工具栏中有一个按钮来搜索客户,我需要将此按钮的命令属性绑定到在Customers页面的viewmodel中定义的命令。这个页面是HOMEPAGE的孩子,而HOMEPAGE又是MAINWINDOW的孩子。你能建议一种方法吗,即访问子对象中定义的命令? 谢谢。

1 个答案:

答案 0 :(得分:0)

这违反了MVVM的原则。

ViewModels(及其相应的命令)与视图的比例为1:1。每个ViewModel只提供一个View,一个View。它有助于将ViewModel视为View的codeBehind,只是它永远不能直接访问View(因此它与它完全分离)。

违反此原则(V to VM == 1:1),会在ViewModel之间或Views之间创建依赖关系,这是一件坏事。它使您的应用程序更难维护,因为每个“模块”都依赖于其他“模块”的实现。

您应该做的是在ViewModel上公开另一个为相关View提供服务的命令。那个命令反过来可以触发你想要的任何东西。

相关问题