ホームページ > バックエンド開発 > C++ > WPF で子ビュー モデルからメイン ビュー モデル関数を呼び出すにはどうすればよいですか?

WPF で子ビュー モデルからメイン ビュー モデル関数を呼び出すにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-31 20:53:11
オリジナル
865 人が閲覧しました

How Can I Call Main View Model Functions from Child View Models in WPF?

他の View Model から Main View Model の関数を呼び出す

複数の 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート