1

假设我有一个模型,它为我提供了一个属性,即自定义对象列表。该模型是一个单例,我将此属性的引用提供给 ViewModel。这些自定义对象具有例如布尔属性。现在,用户通过单击视图并操作模型中的参考来更改这些值。因此,我的模型中的列表不会改变,因此模型无法通知其他视图,除非我为每个列表成员实现事件处理。

另一方面,如果我分配了一个完整的新列表,我的模型会通知其他人。

问题是:处理我的模型的引用通常是个好主意,还是每个 ViewModel 都应该对列表内容进行深层复制,然后为模型分配一个完整的新列表。如果不是,我应该为模型中列表的每个成员添加事件处理吗?

顺便提一句。ObservableCollection 不是选项,因为它不会检测项目更改,我认为一般模型应该使用 Ilist 接口。

4

1 回答 1

2

您的问题没有直接的答案,这完全取决于您希望应用程序的行为方式。

如果您希望用户所做的任何更改在应用程序中立即生效,那么您应该直接处理模型返回的引用。但在用户方面,你必须处理应用程序主动更改列表并通知用户的情况。

另一方面,如果您希望用户所做的任何修改都必须通过按下“应用更改”按钮来验证,那么克隆列表的选项可能是最佳选择。

于 2012-09-06T04:38:45.077 回答