![]() |
1
17
一般我会推荐你
不要在不同的ViewModel类之间继承
而是直接从公共抽象基类继承它们。
|
![]() |
2
5
与Enrico的上述评论相关。视图模型不应该与视图紧密耦合,而是相反。视图应该松散地耦合到视图模型。视图模型不应该了解视图,这允许您轻松地对视图模型进行单元测试。视图与视图模型之间的所有交互应通过视图模型中的属性(操作的ICommand属性和数据绑定的其他属性)实现。 有一点是正确的,那就是ViewModel与模型紧密耦合,所以上面的泛型的使用允许大量的可扩展性。这是我推荐的模式。 通过提供一个基本上只公开属性的ViewModel类,它应该允许您将其放入任何类型的表示框架中,并利用以前使用过的所有代码。换句话说,如果实现得当,您可以将ViewModels程序集放到ASP.NET MVC应用程序中,并将视图与属性绑定,并且不更改代码。 关于MVVM基础知识的一篇好文章是: this one. 我真的认为MVVM是UI开发的最佳选择。显然,我们不能全部使用它,因为它需要使用MVVM方法从头开始构建一个应用程序,但是当您构建一个新的应用程序时,这不是一个问题。 我对ICommand的一个抱怨是它位于基本上用于WPF的表示核心组件中。如果微软想要松耦合,它应该在另一个程序集中。 |
![]() |
3
4
我很想看看是否有更好的答案,但当我遇到同样的问题时,我总是将对象的显式强制转换作为私有财产,就像这样:
它起作用了,这是我想到的最好的方法,但我从来没有觉得很干净。 |
![]() |
4
4
我认为这里的问题是每个视图应该有一个视图模型,而不是每个模型有一个视图模型。 原因很明显,因为您只能将一个对象设置为DataContext,所以该对象应该是该视图的ViewModel。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |