相关疑难解决方法(0)

在MVVM中,ViewModel或Model应该实现INotifyPropertyChanged吗?

我经历过的大多数MVVM示例都使用了Model实现INotifyPropertyChanged,但在Josh Smith的CommandSink示例中 ,ViewModel实现了INotifyPropertyChanged.

我还在认知上把MVVM概念放在一起,所以我不知道是否:

  • 你必须将INotifyPropertyChanged放在ViewModel中以使CommandSink工作
  • 这只是常态的失常,并不重要
  • 你应该总是有Model实现INotifyPropertyChanged,这只是一个错误,如果从代码示例开发到应用程序,这将被纠正

您曾参与MVVM项目的其他经历是什么?

c# mvvm inotifypropertychanged

155
推荐指数
7
解决办法
4万
查看次数

MVVM的基本概念 - ViewModel应该做什么?

为了掌握MVVM的概念,我已经阅读了几个博客并查看了一些项目.

根据我的理解,一个视图是愚蠢的,它只知道如何呈现传递给它的东西.

模型只是普通数据,而ViewModel就像两者之间的填充,它应该从模型中获取信息并将其传递给View,View应该知道如何呈现它.或者反过来说,如果视图中的信息发生变化,它应该将更改传递给模型.

但我仍然不知道如何应用这个概念.有人可以解释一个非常简单的场景,以便我能掌握这个概念吗?我已经看过几个项目,但它仍然没有完全合理,所以如果有人能用简单的英语写出来,那就太好了.

mvvm

76
推荐指数
3
解决办法
3万
查看次数

MVVM - Model或ViewModel中的PropertyChanged?

我已经完成了一些MVVM教程,我已经看到了这两种方式.大多数人使用ViewModel for PropertyChanged(这是我一直在做的),但我遇到了一个在模型中做到这一点.两种方法都可以接受吗 如果是这样,不同方法的好处/缺点是什么?

c# mvvm

19
推荐指数
3
解决办法
2万
查看次数

绑定到Model或ViewModel

我知道已经有关于该主题的问题,但其中的问题在某种程度上与其他问题有关,并没有提供确凿的答案.

特别是那里:问题1,问题2,当然还有问题3 所以请不要太快关闭这个问题.他们回答那里只是说"做这个,做那个"而不是为什么!

有些人否认需要a ViewModel并且说"标准"方式是直接绑定到模型.这是我否认并试图用技术论证来证明的.

从我在后台MVC,MVP,Presentation Model,它只是很自然地我使用ViewModel.也许我错过了一个重点?

所以对我来说,默认是绑定到a ViewModel,无论它Model是什么(无论它是否实现INotifyPropertyChanged).

我看到绑定到s的原因几个ViewModel,包括(如此处提到的CodeProject另一篇文章)

1.从视图中删除逻辑

  • 使逻辑单元可测试
  • 减少代码冗余(在需要时复制)

2.安全

  • 该模型包含用户不得更改的属性
  • 如果绑定到模型,则会发生自动但不需要的更新

3.松耦合

  • 如果直接绑定到模型,则较低层和View之间将存在耦合
  • 更改模型会导致所有视图中的更改
  • 视图不依赖于任何给定的模型
  • 可以使用EF,某些DSL,批处理文件等轻松生成模型

4.发展速度

  • 您可以从Prototype ViewModel层次结构开始并绑定到该层次结构
  • 如果模型仍在开发中,您可以从a开始 Prototype Model
  • Model并且ViewModel可以开发testdriven,无论View
  • View可完全由设计师,还是具有很强的设计背景开发商建

5.解决了"棘手的同步"问题

  • 对于任何给定的"棘手同步"问题,有很多解决方案,例如
  • AutoMapper
  • 来自模型的事件系统(模型触发事件,ViewModel订阅)

6.整个项目的结构相同

  • 有一些点需要ViewModel,比如SelectedItem
  • 将Binding与Model和ViewModel混合是错误的
  • 新鲜的开发人员很难弄清楚项目的结构
  • 稍后开始带ViewModel时,无法绕过它是凌乱的

7.可扩展性 …

c# wpf binding mvvm

8
推荐指数
2
解决办法
2645
查看次数

标签 统计

mvvm ×4

c# ×3

binding ×1

inotifypropertychanged ×1

wpf ×1