0

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.
    }
}
4

2 に答える 2

0

リージョン内のビューを表示または非表示にするには、自分でビューを追加または削除できます。

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 );
    }
}
于 2011-08-08T09:41:59.030 に答える
0

あなたはこれを行うことができます。基本的に、Unityなどの使用しているIoCコンテナーを使用して、IAboutModuleViewをAboutModuleViewにマップする必要があります。次に、ShowViewメソッドで、RegionManagerでRegisterViewWithRegionを呼び出し、ビューを渡します。

しかし、どのように、どこでプレゼンターを構築しますか?ShowView()の呼び出しは誰が担当しますか?

また、MVVMパターン(VMファーストまたはビューファーストのどちらを使用するかはあなた次第です)を確認することをお勧めします。これは、MVPにかなり似ていますが、WPFおよびSilverlightアプリケーションにより適しています。

于 2011-08-04T09:44:57.677 に答える