從其他視圖模型呼叫主視圖模型函數
問題:
問題:在應用程式中透過樹狀視圖和多個內容呈現器,您尋求呼叫主視窗視圖模型中的函數(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中文網其他相關文章!