2013-01-08 82 views
2

我正在使用WPF,Unity和Prism 4.處理.Net應用程序。該應用程序將包含一個在選項卡頁面上具有多個視圖的shell。該應用程序在很大程度上依賴於名爲SystemTreeModule的模塊,該模塊包含將在許多地方出現的SystemTreeView如何使用Prism和Unity顯示視圖的多個實例

我剛剛完成了我的第一個視圖,其中我定義了一個名爲「SystemTreeRegion」的區域。在SystemTreeModule中,我在該區域註冊了一個我的SystemTreeView實例。奇蹟般有效!該SystemTreeView類型是使用Unity的自動發現特徵發現(所以它沒有明確註冊):

public void Initialize() 
{ 
    _regionManager.RegisterViewWithRegion("SystemTreeRegion",() => _container.Resolve<SystemTreeView>()); 
} 

現在是時候開始,我想用SystemTreeView第二模塊上的工作。當我在新視圖中創建名爲「SystemTreeRegion」的區域時,我感到非常自信,但失敗,但出現以下例外:

創建名稱爲「SystemTreeRegion」的區域時發生異常。 唯一的例外是信息:System.ArgumentException:地區具有給定名稱已被註冊:SystemTreeRegion

所以我一直都用Google搜索和搜索StackOverflow的答案,但你應該如何我一直無法弄清楚做這個!

我甚至不能告訴我們,如果我只是缺少一些細節或者如果我在概念上的路要走......

回答

1

你是不是路要走概念。通過模塊提供視圖是很好的。但請記住,您的應用程序中只能有一個名爲「SystemTreeRegion」的視圖,否則Prism的區域經理將無法知道您想要訪問哪個視圖。

考慮到這一點 - 如果您嘗試將視圖註冊到某個地區的名稱並希望該視圖出現在每個帶有該名稱的地區,則在概念上是錯誤的。您只能將視圖註冊到某個地區。

所以,只要確保每個地區都有自己獨特的名稱,然後註冊該地區所需的視圖,那麼您將會很好。

+1

只是澄清你的最後一次感謝 - 你的意思是; 「所以,只要確保每個**地區**都有其獨特的名稱[......]」? –

+0

哎呀!感謝您指出了這一點。當然,每個**區**都是指。 – Spontifixus

+0

然後我在概念上是錯誤的。 : - /可以說我爲所有想看我的SystemTreeView的地區創建獨特的地區名稱。您是否會在SystemTreeModule中或在每個定義要在其中顯示SystemTreeView的區域的模塊中編寫用於註冊所有區域視圖的代碼? –

相關問題