我的ViewModel应该有一个ObservableCollection视图还是ViewModels?

Edw*_*uay 11 wpf itemscontrol observablecollection mvvm

我正在尝试通过将DataConmplate绑定到ViewModel上的ObservableCollections来使用ItemsControl来理解基本的MVVM设计方法.

我见过绑定到字符串,视图ViewModel的 ObservableCollections的示例.

绑定到字符串似乎只适用于演示,它是绑定到" 包含ViewModel集合的View集合的ViewModels ",WPF的强大功能似乎真正出现了.

对于那些精通MVVM模式的人来说,将ItemControl,ListView,ListBox绑定到ViewModel中的集合的标准方法是什么?我正在寻找这样的经验建议:

  • 总是使用ObservableCollection <...>而永远不会列出<...>,因为......
  • 比ItemsControl更好的东西来显示一个集合是......
  • 为了使过滤在ViewModel中工作而不是代码隐藏,请使用...
  • 当...时使用View集合和ViewModels集合时......
  • 90%的时间我创建一个ItemsControl并将其绑定到具有自己的ViewModels的ObservableCollection视图...

Ric*_*ire 10

我会使用ViewModel的ObservableCollection,原因如下:

  • ObservableCollection已经具有可用于在其被修改时发信号的事件(例如,当从集合中添加/移除项目时).
  • 我们在ViewModel'层',因此它提供了更清晰的分离,使ViewModel包含ViewModel而不是Views的集合
  • 如果需要修改或从集合中的项目获取数据,则可以更轻松地修改/访问该数据(如果项目是ViewModel(如果它们是视图,您将经常投射View的DataContext或访问其UI元素).