このサイトを検索したところ
、MVVMパターンでwpfユーザーコントロールを読み込む方法が2つ見つかりました。
MVVM-Light:UserControlをウィンドウにロード
しかし、それでも私は私の問題とこのリンクへの答えを見つけることができません
MVVM-ライトロケーターパターンと再利用可能なUserControl
私は理解していませんでした....だからここに私は私のような他の人が苦労しているのを助けるかもしれない私の問題を述べています......
私MainWindow
は2つの部分からなるaを持っています。1つはTreeView
(a
UserControl
)を持ち、もう1つはWindowsエクスプローラーと同じように異なるユーザーコントロール(DisplayPanelという名前)を表示します。
右側の表示パネルには、ツリービューのクリックノードにさまざまなユーザーコントロールが表示されます。
私TreeView
はそれ自体がユーザーコントロールです。
を使用してこの複合UIを機能させるにはどうすればよいですかMVVM
。また、MVVM
lightToolkitの使用を計画しています。これは助けることができる何かを持っていますか...
例は素晴らしいでしょう
ありがとう... :)
編集
私のTreeViewは、ツリービューの選択されたアイテムをキャッチUserControl
する依存関係プロパティを作成しました。UserControl
これにより、この依存関係プロパティを使用して、「MainView」ContentControl
バインディングに必要なビューを設定できます。コメントでアドバイスされたとおりです。 。すべてが今までです
問題は、選択したアイテムに含まれるデータを表示したいのですが、UserControlsのDataContext(右側に表示されます)を選択したアイテムに設定できないため、ビューモデルを使用できなくなります。コマンドおよびその他の操作のそれぞれのユーザーコントロール
私もこれを解決しようとしました....TreeViewUserControlビューモデルのメディエーター(メッセンジャー)を使用して、Usercontrol(表示する必要があるもの)のビューモデルにメッセージを送信しました。ツリービューでアイテムが選択されるたびにメッセージが渡されます。メッセージには選択したノードが含まれます。データを表示できるように、UserControlのデータコンテキストをビューモデルに設定したことを忘れました
しかし、このアプローチを使用すると、問題は、あるタイプのノードを初めてクリックしたときにデータが入力されないが、同じタイプのノードをもう一度クリックするとデータが入力されることです。何が起こっているのかというとUserControl
、ツリーアイテムが初めてクリックされ、メディエーターがメッセージを送信したときに、オブジェクトが使用可能になります。そのため、メディエーターはメッセージをuserControlビューモデルに渡すことができません。
私はこれをさらに解決する考えがまったくありません....ユーザーコントロールを正しく表示するか、他のことをする必要がある場合は私の方法です....完全に混乱しています.....