6

我无法弄清楚如何让视图模型收到模型更改的通知,而无需在我的模型中添加一堆特定于 UI 的东西,例如 INotifyProperyChanged 和 INotifyCollectionChanged,或者创建大量不同的事件并做一堆感觉就像它们是特定于 UI 的,应该远离模型。

否则我只需要复制视图模型中的所有业务逻辑以确保一切都是最新的,那么拥有模型有什么意义呢?

我的模型中的一个棘手问题是“类别”类的属性。你可以把它想象成一个树结构,属性都是叶子节点的后代。那么在模型中,属性是通过它的所有孩子递归生成的,这一切都很好。然而,视图模型需要绑定到该属性并且需要知道它何时更改。我应该更改模型以适应视图模型吗?如果我这样做了,那么此时视图模型实际上并没有做任何事情,模型会引发所有必要的更改通知,并且视图可以直接绑定到模型。此外,如果模型是我没有来源的东西,我将如何解决这个问题?

4

1 回答 1

7

我不同意这一点,INotifyPropertyChanged并且INotifyCollectionChanged是特定于 UI 的。它们位于未绑定到任何特定 UI 堆栈的命名空间和程序集中。出于这个原因,我通常将这种行为放在系统中尽可能低的位置(通常是数据层)。

如果出于某种原因您不想将其置于该级别,那很好。您可以将其放在更高的级别,例如服务或 UI 层。但是,您需要确保对数据结构的所有更改也通过该层发生。

于 2009-05-23T07:15:04.883 回答