次の問題について助言してください。 私はWPF、Prism、およびMVVMについてはかなり新しいです。WPF Prsim MVVMアプリケーション、複数のビュー、コマンドとイベントを混乱させる
私たちは、C++のWPFポートで書かれた古いアプリケーションの汚れたスクラッチバージョンを計画し始めました。
私たちは現在、アプリケーション、メインウィンドウ、メニュー、ツールバーに(保存、追加、編集などのコマンド)を持つUI構造を持っています。プリミティブを使用してViewModelsにバインドされた異なるビューをロードしているMainRegionもあります。 AutoWire VMの機能(ナビゲーション)
ここで問題は、すべてのビューは[Save Create Edit]のツールバーコマンドを受け入れる必要があるということです。各コマンドは現在のビューでのみ実行する必要があります。
2つの問題は、今表示されます。各アクティブビューの各コマンドのCanExecuteバインディング
、
各ビューに保存上の異なるアクションを実行します。
我々はメインウィンドウを以下しているとしましょう:
MainWindow
- Menu
- ToolBar
- ContentControl (Region Manager)
は、ユーザーがナビゲーションLESTこの瞬間設定でsettings.xaml
を言うために生じたいくつかのメニュー項目を、選択されたと言うことができますので、変更アレントツールバーのbtnを無効にする必要があります。次に、いくつかの設定を変更しています.ViewModel isDirtyプロパティが変更されました。この情報をボタンの状態に送信する方法は?
第二の問題は、Saveコマンドは、現在我々がPubSubEventsを使用している、いない設定のViewModelに、メインウィンドウのViewModel上で実行し、それぞれのViewModelは、SaveEventをサブスクライブ:
アクティブなビュー名は _eventAggregator.GetEventを経由して送信されif (viewName.Contains("Settings"))
{
this.Settings = _settingsService.Save();
}
().Publish(ActiveView);
このようなUI実装の適切な方法を教えてもらえますか?ありがとう
本当にSO形式の質問に答えることはできないと思います。一度に解決するには問題が多すぎます。 – Fang