我正在使用WPF创建一个使用Prism框架的应用程序。 我已经为Toolbar,Menubar和Workspace创建了Shell表单并定义了区域。 在工作区,我可以加载模块,但我有一个要求,我必须加载员工主表单显示网格中的所有员工列表。双击该网格中的员工行,它应该导航到员工详细信息表单。在这里我不应该使用Tab控件。双击员工网格时,应该关闭或卸载Employee Master表单,并且应该加载员工详细信息屏幕。
Prism专家对此提出的任何建议。
谢谢和问候, 哈利
答案 0 :(得分:2)
我发现在这些场景中,人们正在寻找“Prism-ify”的解决方案。这是我在Prism中使用EventAggregator时的经验法则:
这是我使用EventAggregator解决问题的唯一次数。否则,我只使用WPF内置的机制。特别是在主/详细情景中,这两个视图可能只在一起使用,使它们在逻辑上是相同的视图,而不是单独的视图。
在这种情况下,我通常做这样的事情(在这种情况下我省略了appopritate DataTemplates,但希望这足以说明你不需要任何花哨的东西来解决这个问题)。
<ListBox ItemsSource="{Binding Turtles}" IsSynchronizedWithCurrentItem="True" />
<ContentControl Source="{Binding Turtles/}" />
这使用简单的WPF机制来显示集合中的项目列表,当用户选择项目时,“Turtles /”的值将更改为所选项目。简单。无需过度复杂化。
如果你真的觉得你的场景需要一个EventAggregator(符合上面的规则#1和#2),那么尽量做到这一点......听一个由视图模型引发的事件并从中消耗它查看模型(你正在使用MVVM,对吧?)。还有一件事令人头疼。
答案 1 :(得分:0)
我会为此或可能使用新的VisualStateManager使用eventaggregator。
我陷入PRISM的一个陷阱是过度思考设计。我最终停止使用它并将其从我的项目中删除,事情变得更好。虽然我仍然使用和喜欢eventaggregator ...但是整个地区都有很大的学习曲线和观点......