首页 >后端开发 >C++ >如何在 WPF 中从子视图模型调用主视图模型函数?

如何在 WPF 中从子视图模型调用主视图模型函数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-31 20:53:11872浏览

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

从其他视图模型调用主视图模型中的函数

在由多个视图模型组成的多方面程序中,通常需要在主视图模型中执行特定函数来自其他后代视图模型的主视图模型。考虑一个场景,其中主视图模型管理内容呈现器中的内容显示,并且需要从子视图模型手动更新此显示。

实现

弥合此通信差距,考虑合并委托对象。这些委托本质上建立了一条返回父视图模型的路径,提供了一种“引发事件”的方法,指示需要调用某个方法。

简单方法调用

调用特定的方法父视图模型中的方法,使用以下委托语法:

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)
}

直接绑定

如果合适,另一种方法是直接从子视图绑定到父视图模型,如下图所示:

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

这预设父视图模型的实例是设置为主窗口的 DataContext。

以上是如何在 WPF 中从子视图模型调用主视图模型函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn