首頁 >後端開發 >C++ >如何在 WPF 應用程式中從子視圖模型呼叫主視圖模型函數?

如何在 WPF 應用程式中從子視圖模型呼叫主視圖模型函數?

Barbara Streisand
Barbara Streisand原創
2024-12-29 18:26:10849瀏覽

How Can I Invoke Main View Model Functions from Child View Models in a WPF Application?

從其他視圖模型呼叫主視圖模型函數

問題:

問題:

在應用程式中透過樹狀視圖和多個內容呈現器,您尋求呼叫主視窗視圖模型中的函數(MainWindowViewModel)來自樹視圖視圖模型(TreeViewViewModel)。這對於手動更新顯示是必要的,因為 MainWindowViewModel 控制這些變更。

解決方案:

使用委託對像是這種父子通信的可行解決方案。委託方法可以在不同的上下文中使用,包括子父視圖模型、程式碼隱藏關係和純資料互動。有關委託的更多信息,請參閱 Microsoft 的委託(C# 程式設計指南)文件。

委託實作:
public delegate void ReadyForUpdate();
public ReadyForUpdate OnReadyForUpdate { get; set; }

在 TreeViewViewModel 中,您可以實作委託來提供傳回父視圖模型的路徑。定義一個委託方法,以便在子視圖模型準備好時呼叫:
public void TreeViewViewModel_OnreadyForUpdate()
{
    UpdateDisplay();
}

主視圖模型 (MainWindowViewModel) 會在附加處理程序後訂閱 UpdateDisplay 方法:

資料綁定方法:
<!-- In TreeViewView -->
<Button Content="Click Me" Command="{Binding DataContext.ParentCommand,
RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />

或者,考慮一種更簡單的方法,涉及直接從子視圖到父視圖模型的資料綁定。例如,綁定按鈕指令屬性:這假設 MainWindow 的 DataContext 設定為父視圖模型的實例。

以上是如何在 WPF 應用程式中從子視圖模型呼叫主視圖模型函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn