WPF的MVVM框架Stylet开发文档 12.可绑定集合BindableCollection

12.可绑定集合BindableCollection

概述

BindableCollection是 的子类ObservableCollection。如果您的 ViewModel 中有一些东西的集合,并且想将它用作 View 中某些东西的 ItemsSource等(并且当一个项被添加到该集合中/从该集合中删除时通知 View),它就是要使用的类。

但是,它增加了一些有用的额外功能:

  • 新的AddRange,RemoveRangeRefresh方法
  • 是线程安全的

新方法

ObservableCollection缺少几个非常有用的方法:AddRangeRemoveRange. 这些几乎可以满足您的期望,允许您一次添加删除一系列元素,而不必手动遍历每个元素并调用每个元素(collection.Add(element)同时为添加的每个元素引发大量事件)。AddRange并且RemoveRange只会在每个添加/删除的范围内引发一组事件。

Refresh是一种方便。它不会以任何方式修改集合,但会触发 和PropertyChanged事件CollectionChanged,向任何 UI 元素指示集合已被修改并且它们应该重新加载它们的数据。它不是经常需要的,但是存在_真正_需要的时候。

线程安全

线程安全是通过将所有操作(添加、删除、清除、重置等)分派到 UI 线程来实现的。调度使用Execute.OnUIThreadSync,这意味着:

  • 这些操作是同步的:被调用的方法在操作完成之前不会返回。
  • 如果您已经在 UI 线程上,它们是免费的——在这种情况下,操作将同步执行。
  • 所有PropertyChangedCollectionChanged事件始终在 UI 线程上引发。

最后一点意味着BindableCollection上没有PropertyChangedDispatcher属性,就像 PropertyChangedBase- 事件总是在 UI 线程上引发,因为与属性相关的操作总是在 UI 线程上执行。同样,没有CollectionChangedDispatcher概念。

项目原地址:https://github.com/canton7/Stylet
当前文档原地址:https://github.com/canton7/Stylet/wiki/BindableCollection

上一篇:WPF的MVVM框架Stylet开发文档 11. Screens and Conductors
下一篇:WPF的MVVM框架Stylet开发文档 13.验证模型基类ValidatingModelBase

你可能感兴趣的:(MVVM,Stylet框架,wpf,ui,stylet,mvvm)