Wpf 为什么两个模型不应该互相交谈

Wpf 为什么两个模型不应该互相交谈,wpf,silverlight,mvvm,prism,Wpf,Silverlight,Mvvm,Prism,好的,在MVVM模式中,两个模型不应该相互认识或交谈是一个很好的实践。这意味着您不应该在另一个模型中创建一个对象,然后注册事件或执行类似的操作 但为什么呢?如果两个模型互相认识,那又有什么错呢。我正在编写代码,如果我的两个模型相互认识,将会发生什么 如果您打算以任何方式绕过MVVM,您需要有一个好的理由(否则,您可能只需将其作为传统代码编写并保存一些输入):) 使用MVVM有几个好处,主要与非常松散的耦合、单元测试和重用有关 松耦合的基本原理如下: 视图知道如何显示特定形状的数据,但不知道数据

好的,在MVVM模式中,两个模型不应该相互认识或交谈是一个很好的实践。这意味着您不应该在另一个模型中创建一个对象,然后注册事件或执行类似的操作

但为什么呢?如果两个模型互相认识,那又有什么错呢。我正在编写代码,如果我的两个模型相互认识,将会发生什么


如果您打算以任何方式绕过MVVM,您需要有一个好的理由(否则,您可能只需将其作为传统代码编写并保存一些输入):)

使用MVVM有几个好处,主要与非常松散的耦合、单元测试和重用有关

松耦合的基本原理如下:

  • 视图知道如何显示特定形状的数据,但不知道数据来自何处
  • ViewModel提供了视图可以使用的特定形状的数据和设置,但不知道是谁在显示它
  • 模型知道如何保存通用数据,但不知道谁在使用它
  • 控制器(大多数MVVM解释中缺少)决定要获取哪些数据、显示哪些数据以及在何处显示这些数据。这就是决策的归属
如果需要ViewModels相互了解,则很可能缺少管理2个ViewModels和关联模型/视图的控制器对象


如果您能提供更多关于当前链接模型的原因的信息,我可能会建议一种替代方法。

如果您打算以任何方式绕过MVVM,您需要有一个好的理由(否则您最好将其作为传统代码编写并保存一些键入):)

使用MVVM有几个好处,主要与非常松散的耦合、单元测试和重用有关

松耦合的基本原理如下:

  • 视图知道如何显示特定形状的数据,但不知道数据来自何处
  • ViewModel提供了视图可以使用的特定形状的数据和设置,但不知道是谁在显示它
  • 模型知道如何保存通用数据,但不知道谁在使用它
  • 控制器(大多数MVVM解释中缺少)决定要获取哪些数据、显示哪些数据以及在何处显示这些数据。这就是决策的归属
如果需要ViewModels相互了解,则很可能缺少管理2个ViewModels和关联模型/视图的控制器对象


如果您能提供更多有关当前链接模型的原因的信息,我可能会建议一种替代方法。

视图模型通常非常适合彼此进行互操作。视图中的父/子关系毕竟涉及包含子视图模型集合的父视图模型。例如,在许多情况下,父视图中命令的可用性取决于其子视图的状态。有时将其委托给一个单独的控制器类是合适的,但这样做通常也不值得


这实际上取决于应用程序的总体复杂性。有时这种努力是必要的;有时这只是镀金而已。

视图模型之间的互操作通常非常合适。视图中的父/子关系毕竟涉及包含子视图模型集合的父视图模型。例如,在许多情况下,父视图中命令的可用性取决于其子视图的状态。有时将其委托给一个单独的控制器类是合适的,但这样做通常也不值得


这实际上取决于应用程序的总体复杂性。有时这种努力是必要的;有时只是镀金。

我认为这对松耦合不好!我认为这不利于松耦合!当然可以,但是一旦你没有完全分离对象,你就不能自动测试它们(这是MVVM的主要原因)。CheersHow一个视图模型与另一个视图模型进行互操作会导致其中一个不稳定吗?当然,但只要你不彻底分离对象,你就不能自动测试它们(这是MVVM的主要原因)。一个视图模型与另一个视图模型互操作会导致其中一个不稳定吗?