2

私はWPFとPrismを初めて使用します。新しいウィンドウごとに新しいブートストラッパーを作成する必要があるかどうか知りたいですか?たとえば、「Window1」があり、リストボックスから要素を選択して「ShowDetails」ボタンをクリックすると、新しいウィンドウ「Window2」に選択の詳細が表示されます。ウィンドウとモジュールがありますが、モジュール「Module2」を「Window2」に登録する方法と場所を知りたいのですが。

私のブートストラッパーの例。

class Bootstrapper : UnityBootstrapper
{
    protected override DependencyObject CreateShell()
    {
        var mainWindow = new Window1();
        mainWindow.Show();
        return mainWindow;
    }

    protected override IModuleCatalog GetModuleCatalog()
    {
        var moduleCatalog = new ModuleCatalog();
        moduleCatalog.AddModule(typeof(Module1));

        return moduleCatalog;
    }
}

"App.xaml.cs"

public partial class App : Application
{
    public App()
    { 
        var bootstrapper = new Bootstrapper();
        bootstrapper.Run();
    }
}
4

1 に答える 1

1

Bootstrapper は通常、WPF アプリケーションのスタートアップ クラスで使用されます。通常、これは標準テンプレートの App.xaml.cs ファイルで、App.xaml ファイルのコード ビハインド クラスです。メソッド OnStartup をオーバーライドし、Bootstrapper をインスタンス化し、その run メソッドを呼び出します。これを App.xaml.cs クラスのコンストラクターに記述する代わりに、OnStartup のオーバーライドまでブートストラップの起動を遅らせることができます。次に、Prism で RegionManager を使用し、XAML で領域を定義します。複数の独立した Windows がある場合、これは Prism の使用方法とは少し異なります。Prism ソース コードで使用できる Bootstrapper クラスの CreateShell メソッドで定義する MainWindow または Shell の概念があります。その代わり、メインウィンドウを持ち、領域を定義し、おそらくダイアログに追加のウィンドウを表示するメカニズムを作成することを検討してください。MainWindow を複数の領域に分割し、RegionManager を介してユーザー コントロールを挿入することができます。これは、RegionManager の activate メソッドを介して行われます。

まずは Patterns And Practices Guide を読み、Mike Taulty on Prism のビデオを見ることを検討してください。最初のビデオはこちら:

Prism & Silverlight: パート 1 - スケッチされたコードを Unity に向ける

ビデオ シリーズには、PRISM を使い始めるのに役立つビデオが多数あります (合計 10 個)。

XAML で領域を定義する方法の例を次に示します。

<ItemsControl Regions:RegionManager.RegionName="MainRegion" />

PRISM リージョンは、たとえばボタンにバインドされた DelegateCommand または ICommand によってアクティブ化できます。次のコードは次のとおりです。

var viewA = new ViewA(); 
var regionA = (new RegionManager()).Regions["RegionA"]; 
regionA.Activate(viewA); 

ModuleA で既に行ったように、IModule インターフェイスを実装する複数のモジュールを定義し、これらを ModuleCatalog に追加する必要があります。

于 2012-11-17T04:24:29.800 に答える