2

私は、次の構造を持つ WPF PRISM アプリケーションに取り組んでいます (レイヤーを追加せずに説明を簡略化しています)。Unity を DI/IOC として使用しています

  • AppMain - ブートストラップ
  • GUI - ビューとビュー モデル
  • データ - EF を使用したデータ。

Gui では、次のようなビュー名があります。

  • 従業員表示
  • 注文ビュー
  • レポート

シェルには 3 つのリージョンがあります。MainRegion - メイン コンテンツ TopRegion - ナビゲーション メニュー BottomRegion - ステータス バー

次の方法を使用してビューをリージョンに登録しています

IRegion region = _regionManger.Regions[RegionNames.MainRegion];
var mainView = _container.Resolve<Home>();
region.Add(mainView, ViewNames.HomeViewName);
region.Activate(mainView);

最初のアクティブ化は、Top、Main、Bottom の Module Initialize メソッドで行われます。

この後、ボタンをクリックすると他のビューがアクティブになります。今のところコードビハインドです。サンプルコードはこちら:

 IRegion region = _regionManger.Regions[RegionNames.MainRegion];
 var reportView = region.GetView(ViewNames.ReportsViewName);
 if (reportView == null)
 {
    reportView = _container.Resolve<ReportsView>();
    region.Add(reportView, ViewNames.ReportsViewName);
    region.Activate(reportView);
 }
 else
 {
        region.RequestNavigate(ViewNames.ReportsViewName);
 }

問題1:これを行う方法や私がやっている方法についてのアドバイスは問題ありません。トップメニューには、ホーム、従業員、注文、レポートのボタンがあります。

ホームページには、データグリッドの従業員による最近の注文が読み取り専用としてあります。ダブルクリックして OrderView に移動し、選択した注文を渡してユーザーに表示したいと思います。問題 2このナビゲーションをどこで行うべきかわかりません。

問題 3: RegionMemberLifeTime keepAlive を false に設定すると、INavigationAware メソッドが起動しないという別の問題がありました。KeepAlive を false に設定しないと、ビュー モデルが呼び出されないため、ページが更新されません。

ナビゲートされたときにページを更新し、古くならないようにし、ビューがそこからナビゲートされたときにユーザーへの確認プロンプトを処理する必要があります。

よろしくお願いいたします。

4

1 に答える 1