gpt4 book ai didi

c# - 从 ViewModel 调用 View Code Behind 中的方法?

转载 作者:IT王子 更新时间:2023-10-29 04:43:24 28 4
gpt4 key购买 nike

我在我的 View 的代码背后有一个方法(这个方法对我的 UI 做了一些事情)。

无论如何,我想从我的 ViewModel 触发这个方法。这是怎么做到的?

最佳答案

我(也许还有其他人?)使用 MVVM 的困难在于理解一个简单的事情:View 了解 ViewModel。我使用的是绑定(bind)和命令,但它们是 xaml 中的简单 strings。由于在运行时安全解析(安全意味着您可以输入错误,但软件不会崩溃)这使得 View 与 View 模型解耦(至少在编译时)。我一直在寻找解决方案来保持这种脱钩,例如,行为。

事实是,您可以直接访问 View 模型,它通常是窗口/用户控件的 DataContext:

var vm = (MyViewModel)this.DataContext;

知道了,使用事件可能是从 View 模型调用 View 方法的最佳方式,因为 View 模型不知道是否有订阅者,它只是触发该事件,并且事件可以被 View 或另一个 View 模型使用。

// define in the view model
public delegate void MyEventAction(string someParameter, ...);
public event MyEventAction MyEvent;

// rise event when you need to
MyEvent?.Invoke("123", ...);

// in the view
var vm = (MyViewModel)DataContext;
vm.MyEvent += (someParameter, ...) => ... // do something

关于c# - 从 ViewModel 调用 View Code Behind 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8658499/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com