栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

delegate
方法和链接的答案中使用的方法可以在任何父子关系中使用,也可以在任何方向上使用。这包括从子视图模型到父视图模型,子
Window
代码背后的代码
Window
,甚至是不涉及任何UI的纯数据关系。您可以
delegate
从MSDN上的“
委托(C#编程指南)”页面中找到有关使用对象的更多信息。

我刚刚在今天早些时候回答了类似的问题。如果您查看viewmodels之间的Passing参数,您将看到答案涉及到使用

delegate
对象。您可以简单地将这些
delegate
s(从答案中)替换为您的方法,并且将以相同的方式工作。

请让我知道,如果你有任何问题。


更新>>>

是的,很抱歉,我完全忘记了您想要调用方法,但是…今晚我一直在撰写过多的文章。因此,仍然使用另一篇文章中的示例,只需在

ParameterViewModel_OnParameterChange
处理程序中调用您的方法即可:

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

可以将其

delegate
视为返回父视图模型的路径……这就像引发一个名为的事件
ReadyForYouToCallMethodNow.
。实际上,您甚至不需要输入参数。您可以这样定义
delegate

public delegate void ReadyForUpdate();public ReadyForUpdate onReadyForUpdate { get; set; }

然后在父视图模型中(在像另一个示例一样附加处理程序之后):

public void ChildViewModel_onReadyForUpdate(){    // Call your method here    UpdateDisplay();}

由于您有多个子视图模型,因此可以

delegate
在它们都可以访问的另一个类中定义。如果您还有其他问题,请告诉我。


更新2 >>>

再次阅读您的最新评论后,我想到了一种更简单的方法,该方法 可以
实现您想要的…至少,如果我正确理解您的话。您可以

Bind
直接从子视图到父视图模型。例如,这将允许你
Bind
一个
Button.Command
在子视图的财产
ICommand
在你的父视图模型属性:

TreeViewView

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

当然,这是假设相关父视图模型的实例设置为

DataContext
MainWindow



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号