2011-04-30 74 views
2

我是MEF/Prism和Silverlight的新手,我不確定如何動態地將模塊加載到ItemsControl中。我基本上希望能夠將動態加載的模塊換成同一個區域容器。我如何使用MEF/PRISM來做到這一點?MEF/PRISM Silverlight

+2

模塊未加載到「區域」!區域用於顯示「視圖」,它可以被「拒絕」或「注入」。你能否重新表達你的問題並添加更多細節? :)(順便說一句,PRISM文檔以及QuickStart和參考實現是一個很好的開始方式)) – AbdouMoumen 2011-05-02 10:28:31

回答

2

託管多個控件必須ItemsControl類型的區域:

<ItemsControl 
    x:Name="MainToolbar" 
    cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainToolBarRegion}"> 
</ItemsControl> 

視圖可以添加和代碼中刪除:

//add view if not already present 
IRegion region = this._regionManager.Regions["RegionName"]; 

object view = region.GetView("ViewName"); 
if (view == null) 
{ 
    var view = _container.ResolveSessionRelatedView<IMyView>(); 
    region.Add(view, "ViewName"); 
} 

//remove 
IRegion region = this._regionManager.Regions["RegionName"]; 

object view = region.GetView("ViewName"); 
if (view != null) 
{ 
    region.Remove(view); 
} 

使用此代碼,您還可以通過代碼添加的意見除了使用棱鏡內置的導航功能。

3

Prism中的QuickStart項目可以完全滿足您的要求。 這就是所謂的Modularity QuickStart :)

而且,看看這個線程:Using Prism for navigation in Wpf application

查看注射快速入門並設置的ListView選中項的改變的視圖,從而可能有一定的幫助了。

+0

本示例將MEF模塊加載到不同的控件中。我想將多個模塊加載到1個控件中示例我有一個菜單控件,其中有很多項目,當您單擊任何菜單項時,它會將該特定模塊加載到外殼中的1個共享區域中。那可能嗎? – Pawan 2011-04-30 13:17:07

+0

是的,我認爲這是可能的。事實上,我打算下週在我的應用中實施它。我認爲你可以將所有的子窗口註冊到一個容器(命名實例)中,然後在MenuItem.Clicked事件中刪除特定區域的所有控件,並插入正確的控件。順便說一下,我使用複合應用程序指導(Visual Studio 2008 Prism的prev版本) – surfen 2011-04-30 14:48:25