WPF中各种视图创建技术的优缺点是什么?

use*_*509 12 wpf mvvm

我在过去的两年里一直在使用MVVM,从那时起它肯定已经发展得更好了.当我阅读数百篇MVVM文章和stackoverflow问题时,我注意到似乎有越来越多的文章将view/viewmodel关系和创建描述为ViewModel优先或View优先.这些文章通常使用IoC或DI.

我最喜欢的技术是使用datatemplates来创建视图,并从视图模型而不是视图中构建应用程序.我很少看到使用这种模式的文章.

<DataTemplate DataType="{x:Type ViewModels:DummyViewModel}">
  <Views:DummyUserControl DataContext="{Binding}"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

可测试性和解耦似乎是这些"非数据模板"V-VM创建/关系设计和文章的主要焦点,通常它们与MEF或PRISM有关.最后,我想知道以下内容:

  1. DataTemplate视图创建技术是否仍在使用或推荐?
  2. 第一个设计视图的优缺点是什么?
  3. viewmodel第一次设计的优点/缺点是什么(注入视图)

如果不与MEF/PRISM相关,那么对于涵盖这些主题的文章的任何良好链接都表示赞赏.

Ree*_*sey 2

1.仍然使用或推荐使用DataTemplate视图创建技术吗?

这是我在 MVVM 中首选的操作方法。我非常喜欢这种方法,原因我将在下面详细说明。我在所有开发中都使用它。

2.视图优先设计的优点/缺点是什么?

我发现这里的主要优点是设计时体验更容易一些。设计人员提前“了解”数据上下文,并且往往能够更轻松地完成工作。

从我的角度来看,这里的主要缺点是您在 View 和 ViewModel 之间添加了更紧密的耦合。选择特定型号进行传递也更加困难。

3.viewmodel首次设计(注入视图)的优点/缺点是什么

我个人喜欢这种方法。这样,应用程序的“逻辑”部分就完全包含在 ViewModel 层中。通过使用 ContentPresenters,您可以让 ViewModel 轻松生成其他 ViewModel,从而定义应用程序的“流程”。设计师可以很容易地改变视图。

不过,这里的缺点是设计时可用性略有下降,因为视图在设计时并不真正了解有关虚拟机的任何信息,因此您会失去一些可设计性。