![](/img/trans.png)
[英]How can I implement “View Model First” using Prism and Unity?
[英]How display multiple instances of a view using Prism and Unity
我正在使用WPF,Unity和Prism 4開發.Net應用程序。該應用程序將包含一個外殼,該外殼在選項卡頁上具有多個視圖。 該應用程序嚴重依賴於名為SystemTreeModule的模塊,該模塊包含將在許多地方出現的SystemTreeView
。
我剛剛完成了第一個視圖,在其中定義了一個名為“ SystemTreeRegion”的區域。 在SystemTreeModule我登記我的一個實例SystemTreeView
與那個區域。 奇跡般有效! SystemTreeView
類型是使用Unity的自動發現功能發現的(因此未明確注冊):
public void Initialize()
{
_regionManager.RegisterViewWithRegion("SystemTreeRegion", () => _container.Resolve<SystemTreeView>());
}
現在是時候在我要使用SystemTreeView
的第二個模塊上開始工作了。 當我在新視圖中創建一個名為“ SystemTreeRegion”的區域時,我感到非常有信心,但是由於以下異常而失敗:
創建名稱為“ SystemTreeRegion”的區域時發生異常。 例外是:System.ArgumentException:具有給定名稱的區域已經注冊:SystemTreeRegion
所以我已經用谷歌搜索了StackOverflow並找到了答案,但是我還無法弄清楚你應該怎么做!
我什至無法告訴我是否只是在漏掉一些細節,或者從概念上講我還沒有離開……
從概念上講,您並非遙不可及。 通過模塊提供視圖是完全可以的。 但是請記住,您的應用程序中只能有一個名為“ SystemTreeRegion”的視圖,因為否則Prism的區域管理器將不知道您要訪問哪個視圖。
考慮到這一點-如果您嘗試將視圖注冊到某個區域的名稱,並希望該視圖會出現在帶有該名稱的每個區域中,則從概念上講您是錯誤的。 您只能將視圖注冊到區域。
因此,只需確保每個區域都有自己的唯一名稱,然后注冊該區域所需的視圖就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.