MVVM模式被破坏了吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVVM模式被破坏了吗?相关的知识,希望对你有一定的参考价值。
我有一个基于MVVM-Pattern的WPF应用程序。一切正常。在View-Model的业务逻辑中,我需要调用一些对话框。我已经通过接口实现了它(接口实现在View层中)。 对于我需要设置父窗口的对话框,所以接口中的函数有一个参数“parentView”。
在我的ViewModel中,我从父窗口的类型“object”中获得了一个属性“View”。我将此属性作为实例化对话框的参数。
由于“View”-property来自“object”类型并且是从View层设置并转发回View层,因此View-Model层与View层没有依赖关系。
我怎么想,我打破了MVVM模式吗?
我怎么想,我打破了MVVM模式吗?
不。视图模型不依赖于视图,它只知道您可以在单元测试中轻松模拟的接口。因此,只要“视图”只是某种东西的抽象,这并不能真正打破这种模式。
出于类型安全的原因,您应该考虑将参数类型从object
更改为强类型接口类型。
没有朋友 - 这是一个已解决的问题。我的意思是在所有解决方案中都没有真正的美,但你可以使用Dialog-Service作为例子。
一个真正简单的实现将是一个Singleton
与你的Main-Window
有一个静态字段。现在,您可以从此课程中调用您的Dialogs。
我实际上认为MahApps就是这样的,但是他们用奇特的方式注册它:
<controls:MetroWindow
x:Class="SomeMetroWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
Dialog:DialogParticipation.Register="{Binding}"> <!-- watch this pls --->
<!-- ... --->
</controls:MetroWindow>
这是一个用于一般实施的example。这里有另一个arcticle关于这个主题的arcticles。
正如我所说 - 不是很漂亮,但已经解决了。
以上是关于MVVM模式被破坏了吗?的主要内容,如果未能解决你的问题,请参考以下文章
看起来 is_nothrow_constructible_v() 在 MSVC 中被破坏了,我错了吗?