gpt4 book ai didi

.net - View 和 ViewModel 之间的 MVVM 依赖关系

转载 作者:行者123 更新时间:2023-12-02 07:16:06 24 4
gpt4 key购买 nike

目前 MVVM 设计模式有很多变体,但据我了解,允许 View 依赖于 View 模型。我的一位同事不同意,但他无法提供令人满意的解释。

例如我的 View 包含对其 View 模型的引用。这不是所有 View 都需要的,但它有助于将某些事件传达给无法通过 ICommand 完成的 View 模型。

有这种依赖关系可以吗?有什么缺点?

最佳答案

主要指标是:你能测试一下吗?

View 绝对需要对 View 模型的引用。否则它将如何获得显示自身所需的信息?通常只在 View 的 DataContext 中拥有 View 模型就足够了,但这仍然构成依赖关系。 DataContext 中没有虚拟机, View 将毫无用处。

有时您需要 View 来回调虚拟机。通常我只是在后面的代码中这样做:

public MyViewModel ViewModel
{
get { return DataContext as MyViewModel; }
}

private void _someEventHandler(object sender, EventArgs )
{
ViewModel.SomeMethod();
}

在 View 模型中保留对 View 的引用是您需要小心的地方。如果 VM 依赖于特定的 View 实现,它会与 View 紧密耦合,因此难以测试。

如果 VM 需要以某种方式与 View 交互,您可以将需求抽象为一个接口(interface)并让 View 实现该接口(interface)。然后,当 View 加载时,它可以为 VM 提供对自身的引用,VM 可以与之交互。

关于.net - View 和 ViewModel 之间的 MVVM 依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/781204/

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