【发布时间】:2011-06-07 06:31:29
【问题描述】:
我搜索了这个网站,发现了 2 个链接
how to load wpf usercontrol in MVVM pattern
MVVM-Light: Load UserControl into Window
但我仍然找不到我的问题的答案和这个链接
MVVM-Light Locator Pattern and Reusable UserControl
我不明白....所以我在这里陈述我的问题,这可能会帮助像我一样挣扎的其他人......
我有一个MainWindow,它有两个部分,一个有一个TreeView(a
UserControl) 和其他显示不同的用户控件(名为 DisplayPanel).... 就像 windows 资源管理器一样。
右侧的显示面板将在树状视图的单击节点上显示不同的用户控件。
而我的TreeView 本身就是一个用户控件。
如何使用MVVM 使这个复合 UI 工作。我也计划使用MVVM light Toolkit。这有什么可以帮助的吗...
一个例子会很棒
谢谢... :)
编辑
我在 UserControl 中的 TreeView 我在 UserControl 中创建了一个依赖属性,它捕获树视图中的选定项,以便我可以使用此依赖属性在“MainView”中填充所需的视图ContentControl绑定....正如您在 cmets 中建议我的那样。一切都到了现在
问题是我想显示所选项目中包含的数据,并且我无法将 UserControls(将显示在右侧)的 DataContext 设置为所选项目,因为这样我将无法使用我的用于命令和其他操作的相应用户控件的视图模型
我也尝试解决这个问题....我在 TreeViewUserControl 视图模型中使用了调解器(信使)向用户控件(我需要显示的那个)视图模型发送消息。每当在树视图中选择项目时都会传递消息。并且消息包含选定的节点。我忘了提到我将 UserControl 的 datacontext 设置为其视图模型,以便我可以显示数据
但是使用这种方法的问题是,当我第一次单击一种类型的节点时,数据不会被填充,但如果再次单击相同类型的节点,它会被填充。发生的情况是,当第一次单击树项并且 Mediator 发送消息时,UserControls 对象可用。所以 Mediator 无法将消息传递给 userControl 视图模型.....
我完全没有想法进一步解决这个问题....如果显示用户控制权是我的方式,或者我应该做其他事情....完全混淆.....
【问题讨论】:
-
这可能与 MVVM 或我们必须打破模式并使用背后的代码......。我今天搜索了一整天,但没有找到有用的东西。 :(
-
我并没有专门与 MVVM 轻型工具包相关联......我可能是一个解决方案......如果我能得到一个,因为它不会让我完成我开始的工作...... :(
标签: wpf data-binding mvvm-light dynamic-usercontrols