首页 >后端开发 >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、两个 contentPresenter 和单独的视图组成每个 UI 元素的模型,包括主窗口。要更新显示,您需要从 TreeViewViewModel 调用 MainWindowViewModel 中的方法。

与类似情况一样,可行的解决方案涉及利用委托对象。查看之前题为“在视图模型之间传递参数”的论坛回复,以获取深入的解释和实际实现。只需将示例中的委托替换为所需的方法,它们的功能类似。


更新

直接调用方法不要传递参数,请考虑下面修改后的委托处理程序:

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

此委托充当到父级的路径视图模型,启用类似事件的功能(“ReadyForYouToCallMethodNow”)。或者,您可以定义不带任何输入参数的委托:

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }

在父视图模型中,如上例所示附加处理程序后,您可以调用方法:

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中文网其他相关文章!

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