2012-08-28 96 views
1

我們正在使用PRISM來劃分大型應用程序成模塊,每個模塊都將在我們公司的代表部門:PRISM + Silverlight的:模塊並查看發現

HumanResources 
Accounting 
InformationSystems 
(...) 

每個模塊都會有幾個觀點。例如,Accounting.Module可能有:

BusinessIntelligenceView(/Model) 
ReportingView(/Model) 

我想有發生將是應用程序加載的模塊(我將手動進入ModuleCatalog)。然後,我希望ShellView自動顯示可用視圖的列表,用戶可以使用它來選擇要注入主區域的視圖。

這可能嗎?

謝謝!

回答

0

我不是專家,我不認爲這是內置棱鏡內,但是這是絕對有可能:)

爲你的一些技巧...請善待,我沒有使用一個IDE來編寫任意代碼行:)

首先,您可以創建一個視圖(和一個視圖模型)來顯示可用視圖的列表。這些「可用視圖」可以由定義視圖信息的類來表示。

喜歡的東西:

public interface IAvailableView 
{ 
    string ViewName { get; } 
    string ModuleName { get; } 
} 

其次,要能顯示所有可用的意見,你的模塊需要「當可用」目錄中的加載。它們將在應用程序初始化時被觸發。

在您的模塊中,您現在應該以特定名稱註冊您的視圖,並且您可以將其公開的所有可用視圖註冊到依賴容器中。

public virtual void Initialize() 
{ 
    RegisterView<IView, AnyView>("AnyView"); 
    Register<IAvailableView>(new AvailableView("AnyView", "MyModuleName")); 
} 

一旦加載了所有模塊,視圖模型控件應該能夠解析所有這些IAvailableView。

現在,所有你需要做的是綁定到一個控制那些提供意見,並在RegionManager註冊把對應的視圖一旦在項目的用戶點擊...

var view = GetInstance<IView>(selectedAvailableView.ViewName); 
RegionManager.RegisterViewWithRegion("whateverRegion",() => view); 

希望它能幫助:)