複数の View Model で構成される多面的なプログラム内では、多くの場合、ビュー モデル内で特定の関数を実行することが必要になることがあります。他の子孫ビュー モデルからのメイン ビュー モデル。メイン View Model がコンテンツ プレゼンター内のコンテンツの表示を管理し、この表示を子 View Model から手動で更新する必要があるというシナリオを考えてみましょう。
このコミュニケーション ギャップを埋めるには、デリゲート オブジェクトを組み込むことを検討してください。これらのデリゲートは基本的に、親 View Model に戻るパスを確立し、メソッドを呼び出す必要があることを示す「イベントを発生させる」手段を提供します。
特定のメソッドを呼び出すには親ビュー モデルのメソッドを使用するには、次のデリゲート構文を使用します:
public delegate void ReadyForUpdate();
子ビュー内モデル:
// Define a handler for the ReadyForUpdate delegate public void ParameterViewModel_OnParameterChange(string parameter) { // Here, we call the desired method UpdateDisplay(); }
親ビュー モデル内:
// Attach the handler to the delegate public ReadyForUpdate OnReadyForUpdate { get; set; } // When the delegate's event is raised (e.g., by the child calling UpdateDisplay()), // this method will be executed public void ChildViewModel_OnReadyForUpdate() { // Desired action occurs here (e.g., updating the display) }
代替アプローチが適切であれば、子ビューから直接バインドすることになります。以下に示すように、親 View Model に追加します。
<!-- In TreeViewView --> <Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
これは、親 View Model のインスタンスがMainWindow の DataContext として設定されます。
以上がWPF で子ビュー モデルからメイン ビュー モデル関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。