我是MEF / Prism和Silverlight的新手,我不知道如何将模块动态加载到ItemsControl中。我基本上希望能够将动态加载的模块交换到相同的区域容器中。我怎么能用MEF / PRISM做到这一点?
答案 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内置导航功能外,您还可以使用此代码添加视图。