私は WPF と MVVM を初めて使用するので、次の問題について助けていただければ幸いです。
ユーザーが N 個のチャート オブジェクトをページにどのようにレイアウトするかをダイアログを介して指定するアプリケーションを作成したいと考えています。アプリケーションはこのレイアウトをキャンバスに表示します。キャンバスに表示されたレイアウトに満足したら、ユーザーは後で使用するためにそれを保持します。
すべてのチャート オブジェクトは、長方形として視覚化できます。ユーザーはヘッダーを定義することもできます。これも長方形です。
典型的なレイアウトは、ページの上部にヘッダーがあり、その下に 3 つのグラフが並んでいます。ユーザーは、このレイアウトと各子のサイズと位置をダイアログで指定し、[適用] ボタンをクリックすると、この指定がキャンバス上のグラフィカルな形式で表示されることを期待できます。
私のビューモデルでは、親がキャンバスであるツリーがあり、ヘッダータイプの子が1つ、チャートタイプの子が3つあります。
ユーザーは自分が見ているものを気に入らず、ダイアログで変更を加え、それがビュー モデルの変更に影響を与える可能性があります。
ダイアログとビューモデルの間のView-ViewModelの相互作用を理解しています。しかし、Canvas-ViewModel インタラクションを実装する方法がわかりません。ダイアログでユーザーが特定の座標で特定のサイズのヘッダー長方形を要求した場合、ビューモデルのツリーにそのヘッダーオブジェクトを追加する方法は知っていますが、キャンバスを更新する方法はわかりませんViewModel のツリー。ビューモデルのオブジェクト ツリーを反映するようにキャンバスを描画し、ビューモデルが変更されるたびに (ユーザーがダイアログを操作した結果として) 再描画するにはどうすればよいでしょうか?