我刚接触MEF/Prism和Silverlight,我不确定如何将模块动态加载到ItemsControl中。我基本上希望能够将动态加载的模块交换到相同的区域容器中。如何使用MEF/PRISM执行此操作?
发布于 2011-05-03 20:28:44
承载多个控件的区域必须是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内置的导航功能外,还可以通过代码添加视图。
发布于 2011-04-30 20:06:04
Prism中的QuickStart项目完全符合您的要求。它被称为Modularity QuickStart :)
另外,看一下这个帖子:Using Prism for navigation in Wpf application
ListView Injection QuickStart在视图选定项的更改上设置了一个视图,因此可能也会有一些帮助。
https://stackoverflow.com/questions/5841538
复制相似问题