MEF / PRISM Silverlight

时间:2011-04-30 11:49:45

标签: silverlight prism mef

我是MEF / Prism和Silverlight的新手,我不知道如何将模块动态加载到ItemsControl中。我基本上希望能够将动态加载的模块交换到相同的区域容器中。我怎么能用MEF / PRISM做到这一点?

2 个答案:

答案 0 :(得分:3)

Prism中的QuickStart项目非常符合您的要求。 它被称为Modularity QuickStart:)

另外,请看一下这个主题:Using Prism for navigation in Wpf application

查看注入快速入门确实设置了有关ListView所选项目更改的视图,因此也可能有所帮助。

答案 1 :(得分: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 );
}

除了使用Prism内置导航功能外,您还可以使用此代码添加视图。