子ビュー モデルから親ビュー モデルの関数を実行する方法
アプリケーションは、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 サイトの他の関連記事を参照してください。