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

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

Mary-Kate Olsen
发布: 2024-12-26 05:51:21
原创
598 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板