c# - 在MVVM中,ViewModel或者模型应该实现 INotifyPropertyChanged,C#?

  显示原文与译文双语对照的内容
122 0

通过使用INotifyPropertyChanged实例,我已经完成了大部分的MVVM示例,但是在的例子中,的CommandSink实现了INotifyPropertyChanged的。

我仍然认知把MVVM概念放在一起,所以我不知道:

  • 你必须将INotifyPropertyChanged放在ViewModel中才能使CommandSink工作
  • 这只是规范的一个偏差,它并不重要
  • 你应该始终使模型实现 datacontext,这只是从代码示例中开发到应用程序的错误。

你曾经在MVVM项目上做过的其他事情?

时间:原作者:0个回答

105 1

如果你不想这样做,我总是把 INotifyPropertyChanged 放到数据库中,这样的功能就应该放在视图中,这样的东西就应该放在数据库视图中。

我相信其他人会反对但这就是我工作的方式。

原作者:
145 0

我强烈反对模型不应该实现 INotifyPropertyChanged的概念。这里接口不是用户界面特定的 !它只是告诉我们。实际上WPF大量使用这个来标识更改,但并不意味着它是一个UI界面。我将把它与下面的注释"轮胎是汽车配件。"。当然,但自行车,汽车等等也使用它。总之,不要把那个界面当作UI东西。

尽管如此,这并不意味着我应该相信提供通知的模型。实际上,模型不应该实现这里接口,除非必要。在大多数情况下,没有服务器数据被推到客户端应用程序中,模型可能会过时。但是如果听金融市场数据,那么我不明白为什么模型不能实现接口。例如,如果我有一个非ui逻辑,如果接收出价或者价格,它会发出警告。

然而,有不同的实现方式,但我总是赞成简单性和避免冗余。

什么更好在视图模型上定义事件,并将它的传播到模型中,或者者使视图本质更新模型( 通过视图模型) 。

每当你看到有人声称"你不能这么做"是他们所说的他们在说什么的时候,最底线就是。

它实际上取决于你的案例,事实上它是一个具有大量问题的框架。

我希望我有更多的时间来解释很多I 和一些常见问题的解决方案- - 但是我想我还是。

原作者:
132 5

我们的名字很不清楚,因为我们正在尝试将它的作为控制数据的一个 DataController,而不管谁试图触摸它,它都会控制数据。

在视视图模型为DataController的同时实现DataController是只触及数据的项目,因此你永远不会直接接触数据,但总是使用DataController来实现。DataController对用户界面很有用,但不一定只对用户界面有用。它是用于业务层,UI层,等等 。

DataModel -------- DataController ------ View
/
Business --------/

你最终会得到这样一个模型。甚至业务应该只使用数据视图触摸数据。那你的难题就消失了。

原作者:
...