この質問は、MVVM を念頭に置いてアプリの設計を考慮に入れる方法に関するものです。MVVM の一般的な概念を理解しています (ViewModel は View を認識していない、モデルはドメイン オブジェクトを表すなど)。また、コマンドと、一部のコントロールが ViewModel でコマンドを呼び出す方法についても認識しています。
私が理解できないのは、実際のアプリをこのモデルに適合させる方法です (単純なテキスト ボックス/ボタン/クエリ データベースの例とは対照的に)。ここにいくつかの質問があります:
- メイン ビューには、ユーザーが何をしているかに応じてコンテキスト データを表示するプレビュー セクションがあります (つまり、特定のコントロールを操作することによって、いくつかのプレビュー セクションを表示します)。ビューには、XAML で可能なすべてのプレビューを含めてから、表示/非表示/更新する必要がありますか? ViewModel には、ViewModel の内部ステート マシンによって設定された "public bool ShowPreviewA" や "public bool ShowPreviewB" などのプロパティが必要ですか?
- コントロール間に複雑な相互作用がある場合、ロジックをどこに置くべきか。たとえば、チェックを外すのを防ぐことによって、少なくとも 1 つを選択する必要がある 3 つのチェックボックス。一方ではViewModelを汚染し、他方ではViewに関する特定の「知識」があるように感じます。
この質問を適切に説明するのは困難です (できれば、MVVM をよりよく理解できるでしょう)。
どんなヒントでも大歓迎です。
編集: 本当の問題は、ViewModels の機能を記述するときに問題をどのように解決するかです。トップダウン (つまり、ViewModel プロパティですべての可能なビュー状態をエンコード) とボトムアップ (つまり、論理的に関連するコントロールの各セットは、いくつかの論理状態 (有効な入力など) を報告する子 ViewModel からプロパティを受け取ります) の組み合わせですか? ?