WPF Prism Master详细信息表单

时间:2010-07-22 09:20:30

标签: wpf prism

我正在使用WPF创建一个使用Prism框架的应用程序。 我已经为Toolbar,Menubar和Workspace创建了Shell表单并定义了区域。 在工作区,我可以加载模块,但我有一个要求,我必须加载员工主表单显示网格中的所有员工列表。双击该网格中的员工行,它应该导航到员工详细信息表单。在这里我不应该使用Tab控件。双击员工网格时,应该关闭或卸载Employee Master表单,并且应该加载员工详细信息屏幕。

Prism专家对此提出的任何建议。

谢谢和问候, 哈利

2 个答案:

答案 0 :(得分:2)

我发现在这些场景中,人们正在寻找“Prism-ify”的解决方案。这是我在Prism中使用EventAggregator时的经验法则:

  1. 无论该活动的订阅者是否存在,该应用程序仍然有用
  2. 我不能使用常规的.NET事件或其他机制,因为订阅者是在另一个模块中定义的
  3. 这是我使用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 ...但是整个地区都有很大的学习曲线和观点......