我搜索了这个站点,发现了 2 个链接
如何在 MVVM 模式中加载 wpf 用户控件
MVVM-Light:将 UserControl 加载到窗口中
但我仍然找不到我的问题的答案和这个链接
MVVM-Light Locator Pattern 和可重用的用户控件
我不明白......所以我在这里陈述我的问题,这可能会帮助像我一样挣扎的其他人......
我有一个MainWindow
有 2 个部分,一个有TreeView
(a
UserControl
),另一个显示不同的用户控件(名为 DisplayPanel)......就像 Windows 资源管理器一样。
右侧的显示面板将在树形视图的单击节点上显示不同的用户控件。
而我TreeView
本身就是一个用户控件。
我怎样才能使这个复合 UI 使用MVVM
. 我也打算使用MVVM
轻型工具包。这有什么可以帮助...
一个例子会很棒
谢谢... :)
编辑
我在 TreeView 中创建UserControl
了一个依赖属性,UserControl
它捕获树视图的选定项,以便我可以使用此依赖属性在“MainView”ContentControl
绑定中填充所需的视图....正如您在评论中建议我的那样. 一切都到现在
问题是我想显示所选项目中包含的数据,并且我无法将 UserControls 的 DataContext(将显示在右侧)设置为所选项目,因为这样我将无法使用我的视图模型命令和其他操作的相应用户控件
我也试图解决这个问题....我在 TreeViewUserControl 视图模型中使用了调解器(信使)向用户控件(我需要显示的那个)视图模型发送消息。每当在树视图中选择项目时都会传递消息。并且消息包含选定的节点。我忘了提到我将 UserControl 的数据上下文设置为其视图模型,以便我可以显示数据
但是使用这种方法的问题是,当我第一次单击一种类型的节点时,数据不会被填充,但是如果再次单击相同类型的节点,它会被填充。发生的情况是,UserControl
当第一次单击树项并且 Mediator 发送消息时,s 对象可用。所以 Mediator 无法将消息传递给 userControl 视图模型.....
我完全没有想法进一步解决这个问题......如果显示用户控制权是我的方式,或者我应该做其他事情......完全困惑......