我对viewmodel模式有些怀疑。我的疑问是,为什么我们不在viewmodel中使用UI元素。如果我们在viewmodel中使用UI元素,会发生什么性能问题?请提出任何建议。
答案 0 :(得分:1)
您没有在ViewModels中使用UIElement,因为MVVM原理定义了UIElement以驻留在View中。 John Gossman在文章Introduction to Model/View/ViewModel pattern for building WPF apps中定义了UIElement的正确位置:
模型/视图/视图模型中的视图由可视元素,按钮,窗口,图形和GUI的更复杂控件组成。
出于以下两个原因,您没有在MVVM应用程序的ViewModel中使用UIElement:
对于大多数开发人员来说,后一个原因当然是最重要的。 WPF-MVVM之父Josh Smith在他的文章Patterns - WPF Apps With The Model-View-ViewModel Design Pattern中这样写:
如果您可以在不创建任何UI对象的情况下为ViewModel编写单元测试,则还可以完全使ViewModel外观化,因为它不依赖于特定的可视元素。
UIElement对于单元测试很麻烦,因为WPF UIElement需要layout-measure-render循环才能正常工作。但是,在单元测试中,通常没有这样的循环。