4

モーダル ダイアログのみを開く予定の単一フォーム アプリケーションで作業しています。その目的は、主にユーザーからの入力を取得して、データベースに格納するオブジェクトを作成することです。

  1. スクリーン コンダクターが必要ですか、それともウィンドウ マネージャーで十分ですか? この件についてできる限りのことを読んでみましたが、まだよくわかりません。

    一定量のデータが入力されていない場合にモーダルダイアログを閉じないという利点が欲しいので、これはライフサイクル管理として分類され、コンダクターを使用することを余儀なくされると思います。マネージャーはそれを処理しますか?新しいウィンドウを開くことは、コンダクターではできないという印象を受けましたか?

  2. また、wpf に関してはどちらが優れていますか: ウィンドウ マネージャーのインスタンスを必要な各クラスに渡すことについて読んだことがありますが、1 つのクラスがリッスンしてイベントで指定されたウィンドウを開くイベントを発生させることについても読んだことがあります。この後者は、各クラスとイベント処理クラスの間に緊密な関係を形成するため、悪いでしょうか?

ありがとう

4

2 に答える 2

0

私はこれにかなり慣れていませんが、役立つように努めます。Caliburn Micro でビルドされたアプリケーションを実行すると、ウィンドウ マネージャーが自動的に使用されて起動ウィンドウが作成されます。ブートストラップについて:

    protected override void Configure()
    {
    container = new CompositionContainer(new AggregateCatalog(AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()));

    CompositionBatch batch = new CompositionBatch();

    batch.AddExportedValue<IWindowManager>(new WindowManager());
    batch.AddExportedValue<IEventAggregator>(new EventAggregator());
    batch.AddExportedValue(container);

    container.Compose(batch);
  }

ウィンドウ マネージャーのこのインスタンスを使用して、さまざまなダイアログを管理できます。次に、必要なビュー モデルにウィンドウ マネージャーをインポートするだけです。

private readonly IWindowManager _windowManager;


[ImportingConstructor]
public FooViewModel(IWindowManager windowManager)
{
  _windowManager = windowManager;
}

caliburn micro ドキュメント ( http://caliburnmicro.codeplex.com/documentation ) のサンプルと、次のブログもご覧ください: http://www.mindscapehq.com/blog/index.php/2012/03 /13/caliburn-micro-part-5-the-window-manager/

ビューモデル間の通信は、イベント アグリゲーターによって行われます。

于 2013-11-12T10:46:58.000 に答える