MVVM-Light を使用して UserControl をウィンドウに読み込むベスト プラクティスは何ですか? ウィンドウからViewModelで、またはウィンドウ内で直接、UserControlインスタンスをどこに作成しますか?
3 に答える
ベストプラクティスが心配な場合は、VMにコントロールなどのUI固有のコードを含めないでください。たとえば、ビュー内のコントロールの可視性を制御するプロパティがVMにある場合、そのプロパティはVisibilityではなくbool型である必要があります。ビューはboolプロパティを使用して、コントロールを表示または非表示にします。
したがって、VMに対してデータバインドするビュー(ウィンドウなど)があります。VMの一部のプロパティが変更されると、ウィンドウ内の一部のコードがユーザーコントロールを作成して表示します。
MVVM (Light) を使用したタブ付きインターフェイスの作成に関するこの優れた投稿を読みました。ユーザー コントロールについては触れていませんが、目標はかなり近いものです。ユーザー コントロールをサポートするように変更するのは簡単です。
このアプローチは、タブ コントロールをワークスペース (ViewModel) の監視可能なコレクションにバインドすることです。新しいタブ (またはワークスペース) が追加されると、ViewModel でインスタンス化され、コレクションに追加され、View にデータバインドされ、DataTemplates を使用して新しいタブとしてレンダリングされます。
mvvm light を使用した場合の例を示していただければ幸いです。また、「子ウィンドウ」(ユーザーコントロール)を備えたメインウィンドウをメインウィンドウからのボタンクリックで表示/非表示にしたいという問題もあります..それらをすべて同じ場所に作成する必要があります。たとえば、グリッド列と言って、それらを表示/非表示にしますプロパティバインディングによって?