ホームページ >バックエンド開発 >C++ >WPFで子ビューモデルから親ビューモデル関数を呼び出す方法は?

WPFで子ビューモデルから親ビューモデル関数を呼び出す方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-26 05:51:21600ブラウズ

How to Call Parent View Model Functions from Child View Models in WPF?

子ビュー モデルから親ビュー モデルの関数を実行する方法

アプリケーションは、TreeView、2 つの contentPresenter、および個別のビューで構成されますメイン ウィンドウを含む各 UI 要素のモデル。表示を更新するには、TreeViewViewModel から MainWindowViewModel のメソッドを呼び出します。

同様のケースと同様、実行可能な解決策にはデリゲート オブジェクトを利用する必要があります。詳細な説明と実際の実装については、「ビューモデル間のパラメータの受け渡し」というタイトルの以前のフォーラムの回答を確認してください。この例のデリゲートを目的のメソッドに置き換えるだけで、同様に機能します。


Update

メソッドを直接呼び出すにはパラメーターを渡す代わりに、以下の変更されたデリゲート ハンドラーを検討してください:

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call your method here
}

This delegate親ビューモデルへの経路として機能し、イベントのような機能 (「ReadyForYouToCallMethodNow」) を有効にします。あるいは、入力パラメータを指定せずにデリゲートを定義することもできます:

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }

親 View Model では、前の例で示したようにハンドラーをアタッチした後、メソッドを呼び出すことができます:

public void ChildViewModel_OnReadyForUpdate()
{
    // Call your method here
    UpdateDisplay();
}

複数の子ビューモデルが関係する場合、すべてのユーザーがアクセスできる別のクラスでデリゲートを定義できます。モデル。


アップデート 2

さらに分析すると、より単純なアプローチで十分な場合があります。子ビュー要素を親ビューモデルのプロパティに直接バインドできます。たとえば、TreeViewView の次のコード スニペットは、Button.Command プロパティを MainWindowViewModel の ICommand プロパティにバインドします。

<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, 
RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />

これは、親ビュー モデル インスタンスが MainWindow の DataContext として設定されていることを前提としています。

以上がWPFで子ビューモデルから親ビューモデル関数を呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。