从其他视图模型调用主视图模型函数
问题:
在应用程序中通过树视图和多个内容呈现器,您寻求调用主窗口视图模型中的函数(MainWindowViewModel) 来自树视图视图模型(TreeViewViewModel)。这对于手动更新显示是必要的,因为 MainWindowViewModel 控制这些更改。
解决方案:
使用委托对象是这种父子通信的可行解决方案。委托方法可以在不同的上下文中使用,包括子父视图模型、代码隐藏关系和纯数据交互。有关委托的更多信息,请参阅 Microsoft 的委托(C# 编程指南)文档。
委托实现:
在 TreeViewViewModel 中,您可以实现委托来提供返回父视图模型的路径。定义一个委托方法,以便在子视图模型准备就绪时调用:
public delegate void ReadyForUpdate(); public ReadyForUpdate OnReadyForUpdate { get; set; }
主视图模型 (MainWindowViewModel) 将在附加处理程序后订阅 UpdateDisplay 方法:
public void TreeViewViewModel_OnreadyForUpdate() { UpdateDisplay(); }
数据绑定方法:
或者,考虑一种更简单的方法,涉及直接从子视图到父视图模型的数据绑定。例如,绑定按钮命令属性:
<!-- In TreeViewView --> <Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
这假设 MainWindow 的 DataContext 设置为父视图模型的实例。
以上是如何在 WPF 应用程序中从子视图模型调用主视图模型函数?的详细内容。更多信息请关注PHP中文网其他相关文章!