【发布时间】:2017-06-28 10:22:56
【问题描述】:
我目前正在学习 WPF 中的 MVVM 模式。我认为这真的很酷,但我的问题是:直接使用视图模型将子视图附加到其视图中是否正确?
例如,假设我们有一个方法,其中包含一个循环,当单击按钮时,该循环将新行添加到网格中。我的 ViewModel 应该只包含纯数据,还是还可以包含在字段上放置新元素的逻辑?以及删除它们。
【问题讨论】:
我目前正在学习 WPF 中的 MVVM 模式。我认为这真的很酷,但我的问题是:直接使用视图模型将子视图附加到其视图中是否正确?
例如,假设我们有一个方法,其中包含一个循环,当单击按钮时,该循环将新行添加到网格中。我的 ViewModel 应该只包含纯数据,还是还可以包含在字段上放置新元素的逻辑?以及删除它们。
【问题讨论】:
直接使用视图模型将子视图附加到其视图中是否正确?
没有。视图模型不应该知道任何视图元素。
我的 ViewModel 应该只包含纯数据,还是还可以包含用于在字段上放置新元素的逻辑?以及删除它们。
前者。视图模型可能会暴露视图恰好显示在Grid 中的数据对象集合。或者其他类型的面板。视图模型不关心哪个。
您通常会在视图中使用ItemsControl 来显示视图模型集合中的项目,即ItemsControl 绑定到源集合并在面板中显示每个项目的可视化表示。
【讨论】: