我正在开发一个应用程序使用C#和WPF中的PRISM。我是个新手,我想实现演示者。基本上,我想在我的模块中注册一个演示者,而不是视图。
目前,我在我的模块初始化中执行以下操作:
iRegionManager.RegisterViewWithRegion("MainRegion", typeof(AboutWindow));我想要的是我想有一个演示者,我将在我的模块中注册演示者。此演示者必须负责显示我所在地区的视图。
我试着读了几篇文章和例子,但没能得到我想要的东西。
我的需求的伪代码如下:
public class AboutModule : IAboutModule
{
IRegionManager iRegionManager = null;
IUnityContainer container = null;
public AboutModule(IRegionManager iRegionManager, IUnityContainer container)
{
this.iRegionManager = iRegionManager;
this.container = container;
}
public void Initialize()
{
//Register my presenter here.
}
}
internal class AboutModulePresenter : IAboutModulePresenter
{
private IAboutModuleView iAboutModuleView = null;
internal AboutModulePresenter(IAboutModuleView iAboutModuleView)
{
this.iAboutModuleView = iAboutModuleView;
}
public IAboutModuleView View
{
get
{
return this.iAboutModuleView;
}
}
public void ShowView()
{
//Register my view with region manager and display in the region.
}
}发布于 2011-08-04 17:44:58
你可以做到的。从本质上讲,你必须使用任何你正在使用的IoC容器将IAboutModuleView映射到AboutModuleView。然后在您的ShowView方法中,您将在RegionManager上调用RegisterViewWithRegion,并传入视图。
但是,您将如何以及在何处构建您的演示者?谁将负责调用ShowView()?
我还建议您看看MVVM模式(是否使用VM-first或View-first取决于您),它与MVP非常相似,但更适合WPF和Silverlight应用程序。
发布于 2011-08-08 17:41:59
要在区域中显示或隐藏视图,您可以自行添加或删除该视图:
void AddView()
{
IRegion region = this._regionManager.Regions["RegionName"];
object presentView = region.GetView( "ViewName" );
if ( presentView == null )
{
var view = _container.Resolve<View>( );
region.Add( view, "ViewName" );
}
}
void RemoveView()
{
IRegion region = this._regionManager.Regions["RegionName"];
object presentView = region.GetView( "ViewName" );
if ( presentView != null )
{
region.Remove( presentView );
}
}https://stackoverflow.com/questions/6935905
复制相似问题