2010-07-22 59 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