2010-07-22 93 views
0

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

来自棱镜专家的任何建议。

感谢和问候, 哈利

回答

2

我发现,在这些情况下,人们正在寻找地方“棱IFY”他们的解决方案。这是我的原则进行的拇指时,在棱镜使用EventAggregator:

  1. 应用程序仍然是有用的订户事件是否存在
  2. 我不能使用常规的.NET事件或其他机制,因为用户被定义在另一个模块中

这些是我唯一使用EventAggregator解决问题的时间。否则,我只是使用WPF中内置的机制。特别是在主/细节方案中,这两个视图可能仅在一起使用,使它们在逻辑上是相同的视图,而不是单独的视图。在这种情况下,我通常会做这样的事情(在这种情况下,我省略了特定的DataTemplates,但希望这足以说明您不需要任何幻想来解决此问题)。

<ListBox ItemsSource="{Binding Turtles}" IsSynchronizedWithCurrentItem="True" /> 
<ContentControl Source="{Binding Turtles/}" /> 

这使用一个显示的项目的列表的集合中,并且当用户选择一个项目,值“海龟/”被改变为选择的项目的简单WPF机制。简单。无需过度复杂的事情。

如果您真的觉得您的场景需要EventAggregator(符合上面的规则#1和#2),那么尽可能简单地执行...侦听视图模型引发的事件并从中消费一个视图模型(您正在使用MVVM,对吧?)。更多的是头痛。

0

我会用这一个eventaggregator或可能的新VisualStateManager。

我陷入PRISM的陷阱之一是过度设计。我最终停止使用它,并将其从我的项目中剥离出来,事情变得更好。虽然我仍然使用和爱eventaggregator ......但是那里有对整个地区和视图状态的事情大的学习曲线...

+0

能否详细说明这一点,因为我对这项技术是陌生的......棱镜必须在我的应用程序 – ravi 2010-07-23 12:20:07

+0

告诉我为什么棱镜是必须的。我认为这是必须的,直到我发现它不是...将它添加到您的项目作为一个新人将复杂性和学习曲线非常复杂 – ecathell 2010-07-23 17:47:22

+0

客户端要求就是这样 – ravi 2010-07-24 07:29:59