私は自分のWPFアプリケーションに関連するMainViewModelを持ち、そのコンストラクタを介して割り当てられたMainViewを持っています。個々のビューモデルをネストされたビューに割り当てるか?
アプリケーション> URI> MainWindow.xaml
public MainWindow()
{
InitializeComponent();
var viewModel = new MainViewModel();
DataContext = viewModel;
}
を起動マイMAINVIEWが隠されているとされているボタンに基づいて表示されているように最大4つのネストされたビューまたは子ビューを保持していますMainViewをクリックします。したがって、Visibilityプロパティを切り替えるには、MainViewの各ボタンに割り当てられたコマンドバインディングによって更新されるバインディングを切り替えます。
各ネストされたビューには、関連付けられたViewModelがありません。子ビューにあるすべてのバインディングは、MainViewModelでその情報を検索します。だから、バインディングシステムは、親の 'MainView'に関連付けられたViewModelがあることを知るために、アプリケーションのUIツリーを使い果たします。
全体的に 'ONE' - > ViewModelがあります。これはうまくいくと思われますが、期待通りにこのVMは大きくなり、再要因を必要とします。それは文脈上でははならない情報を保持しています。しかし、これは証明概念のアプリケーションです。だから私はそれを簡単に保ち、それができるかどうかを確認することにしました。
問題:私は出力ウィンドウに、期待される奇妙な、壊れた行動などの結合誤りに気づいた空のビューモデルと空のビューを割り当てる試み
。どの意味がありません... WPFにネストされたビューコントロールで見つかったバインディングをどのように処理するかを、より明確かつ簡潔に知らせる方法はありますか?上記のように、各ビューのコンストラクタが対応するVMに割り当てられていれば、論理的に意味をなさないように動作するはずです。残念ながら、メインビュー上のすべてのボタンは、対応するビューがオンに切り替えられ、他のボタンが非表示になるように指定されているときに動作を停止します。関連するViewModelがあります。いくつかのボタンでは動作し、他のボタンでは動作しません。これは本当に奇妙ですか?