zoukankan      html  css  js  c++  java
  • 轻量级MVVM框架Stylet介绍:(12) BindableCollection

    概述

    BindableCollection是ObservableCollection的子类。如果您在 ViewModel 中有一个某些内容的集合,并且希望将其用作视图中某些内容的 ItemsSource/ etc(并且每当将项目添加到该集合中/从该集合中删除时,都会通知视图),则它是要使用的类。

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

    • 新增方法:AddRange,RemoveRange,Refresh
    • 线程安全

    新方法

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

    Refresh是一种方便。它不会以任何方式修改集合,但会导致触发PropertyChanged 和CollectionChanged 事件,从而向任何 UI 元素指示集合已被修改,并且它们应重新加载其数据。

    线程安全

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

    • 这些操作是同步的:在操作完成之前,调用的方法不会返回。
    • 如果您已经在UI线程上,不作处理 - 在这种情况下,操作将同步执行。
    • 所有PropertyChanged事件和CollectionChanged事件始终在 UI 线程上引发。

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

  • 相关阅读:
    Spark 集群 任务提交模式
    Spark RDD 宽窄依赖
    Spark 资源调度包 stage 类解析
    堆内内存与堆外内存
    Spark笔记(一)
    scala 语言特性
    Centos7.4 Storm2.0.0 + Zookeeper3.5.5 高可用集群搭建
    fs模块他的作用是(文件夹)
    事件循环机制
    简单的下路由(我们可以在控制器中看到路由参数)
  • 原文地址:https://www.cnblogs.com/qouoww/p/15798146.html
Copyright © 2011-2022 走看看