SimpleWindow
载入中...
搜索中...
未找到
sw::ObservableCollection< T > 模板类 参考

支持集合变更通知的泛型集合类 更多...

#include <ObservableCollection.h>

类 sw::ObservableCollection< T > 继承关系图:
sw::ObservableObject sw::IListT< T > sw::INotifyCollectionChanged sw::IToString< ObservableCollection< T > > sw::DynamicObject sw::INotifyObjectDead sw::INotifyPropertyChanged sw::IList

Public 成员函数

 ObservableCollection ()=default
 默认构造函数,创建空集合
 
 ObservableCollection (const ObservableCollection< T > &)=delete
 
 ObservableCollection (ObservableCollection< T > &&)=delete
 
ObservableCollection< T > & operator= (const ObservableCollection< T > &)=delete
 
ObservableCollection< T > & operator= (ObservableCollection< T > &&)=delete
 
 ObservableCollection (std::initializer_list< T > list)
 使用初始化列表构造
 
 ObservableCollection (int capacity)
 指定初始容量构造
 
int Capacity () const noexcept
 获取当前分配的容量
 
void Reserve (int newCapacity)
 预留至少指定数量的元素空间
 
void Refresh ()
 刷新集合,触发集合重置通知
 
void Clear ()
 清空集合中的所有元素,并触发集合重置通知
 
void Add (const T &value)
 在集合末尾追加元素,并触发添加通知
 
void Add (T &&value)
 在集合末尾追加元素(移动语义),并触发添加通知
 
void RemoveAt (int index)
 移除指定索引处的元素,并触发移除通知
 
void Insert (int index, const T &value)
 在指定索引处插入元素,并触发添加通知
 
void Insert (int index, T &&value)
 在指定索引处插入元素(移动语义),并触发添加通知
 
void Move (int oldIndex, int newIndex)
 将元素从一个索引移动到另一个索引,并触发移动通知
 
int IndexOf (const T &value) const
 查找指定值在集合中首次出现的索引
 
int LastIndexOf (const T &value) const
 查找指定值在集合中最后出现的索引
 
bool Contains (const T &value) const
 判断集合是否包含指定值
 
bool Remove (const T &value)
 移除集合中首次出现的指定值,并在成功移除时触发移除通知
 
std::wstring ToString () const
 将集合转换为字符串表示
 
std::vector< T > & GetInternalVector () noexcept
 获取底层std::vector的引用
 
const std::vector< T > & GetInternalVector () const noexcept
 获取底层std::vector的const引用
 
virtual int Count () const noexcept override final
 返回列表中的元素数量
 
virtual TGetAt (int index) override final
 获取指定索引处的元素引用
 
virtual const TGetAt (int index) const override final
 获取指定索引处的const元素引用
 
virtual void SetAt (int index, const T &value) override final
 设置指定索引处的元素值
 
virtual void SetAt (int index, T &&value) override final
 设置指定索引处的元素值(移动语义)
 
- Public 成员函数 继承自 sw::ObservableObject
 ObservableObject ()=default
 默认构造函数
 
 ObservableObject (const ObservableObject &)=delete
 禁用拷贝构造
 
ObservableObjectoperator= (const ObservableObject &)=delete
 禁用拷贝赋值
 
 ObservableObject (ObservableObject &&other) noexcept
 移动构造函数
 
ObservableObjectoperator= (ObservableObject &&other) noexcept
 移动赋值运算符
 
virtual ~ObservableObject ()
 析构时触发对象销毁事件
 
- Public 成员函数 继承自 sw::DynamicObject
 DynamicObject () noexcept
 默认构造函数
 
virtual ~DynamicObject ()
 析构函数
 
bool IsBoxedObject () const noexcept
 判断对象是否为装箱对象
 
bool ReferenceEquals (const DynamicObject &other) const noexcept
 判断与另一DynamicObject是否引用同一对象
 
std::type_index GetType () const noexcept
 获取对象的类型信息
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto DynamicCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto DynamicCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
- Public 成员函数 继承自 sw::INotifyObjectDead
virtual ~INotifyObjectDead ()=default
 默认析构函数
 
- Public 成员函数 继承自 sw::INotifyPropertyChanged
virtual ~INotifyPropertyChanged ()=default
 默认析构函数
 
- Public 成员函数 继承自 sw::IListT< T >
virtual ~IListT ()=default
 虚析构函数
 
virtual std::type_index GetElementType () const noexcept override final
 获取列表元素的类型信息
 
virtual Variant GetVariantAt (int index) override final
 获取指定索引处元素的Variant引用
 
virtual Variant GetVariantAt (int index) const override final
 获取指定索引处元素的Variant副本
 
virtual void SetVariantAt (int index, const Variant &value) override final
 设置指定索引处的元素值
 
virtual void MoveVariantAt (int index, Variant &value) override final
 设置指定索引处的元素值(移动语义)
 
- Public 成员函数 继承自 sw::IList
virtual ~IList ()=default
 虚析构函数
 
- Public 成员函数 继承自 sw::INotifyCollectionChanged
virtual ~INotifyCollectionChanged ()=default
 虚析构函数
 
- Public 成员函数 继承自 sw::IToString< ObservableCollection< T > >
std::wstring ToString () const
 获取描述当前对象的字符串
 

Protected 成员函数

virtual NotifyCollectionChangedEventHandlerGetCollectionChangedEventDelegate () override final
 获取集合变更事件委托的引用
 
virtual void OnCollectionChanged (NotifyCollectionChangedEventArgs &args)
 触发集合变更事件
 
- Protected 成员函数 继承自 sw::ObservableObject
virtual PropertyChangedEventHandlerGetPropertyChangedEventDelegate () override final
 获取属性更改事件委托的引用
 
virtual ObjectDeadEventHandlerGetObjectDeadEventDelegate () override final
 获取对象销毁事件委托的引用
 
void RaisePropertyChanged (FieldId propertyId)
 触发属性更改通知事件
 
template<typename T , typename TProperty >
void RaisePropertyChanged (TProperty T::*property)
 触发属性更改通知事件
 

额外继承的成员函数

- Public 属性 继承自 sw::INotifyObjectDead
const Event< ObjectDeadEventHandlerObjectDead
 对象销毁时触发该事件
 
- Public 属性 继承自 sw::INotifyPropertyChanged
const Event< PropertyChangedEventHandlerPropertyChanged
 当属性值更改时触发的事件
 
- Public 属性 继承自 sw::INotifyCollectionChanged
Event< NotifyCollectionChangedEventHandlerCollectionChanged
 集合变更事件,当集合发生添加、移除、替换、移动或重置等变更时触发
 

详细描述

template<typename T>
class sw::ObservableCollection< T >

支持集合变更通知的泛型集合类

模板参数
T集合元素类型

构造及析构函数说明

◆ ObservableCollection() [1/2]

template<typename T >
sw::ObservableCollection< T >::ObservableCollection ( std::initializer_list< T list)
inline

使用初始化列表构造

参数
list初始化元素列表

◆ ObservableCollection() [2/2]

template<typename T >
sw::ObservableCollection< T >::ObservableCollection ( int  capacity)
inlineexplicit

指定初始容量构造

参数
capacity初始容量

成员函数说明

◆ Add() [1/2]

template<typename T >
void sw::ObservableCollection< T >::Add ( const T value)
inline

在集合末尾追加元素,并触发添加通知

参数
value要追加的值

◆ Add() [2/2]

template<typename T >
void sw::ObservableCollection< T >::Add ( T &&  value)
inline

在集合末尾追加元素(移动语义),并触发添加通知

参数
value要追加的值

◆ Capacity()

template<typename T >
int sw::ObservableCollection< T >::Capacity ( ) const
inlinenoexcept

获取当前分配的容量

返回
容量大小

◆ Contains()

template<typename T >
bool sw::ObservableCollection< T >::Contains ( const T value) const
inline

判断集合是否包含指定值

参数
value要查找的值
返回
包含返回true,否则返回false

◆ Count()

template<typename T >
virtual int sw::ObservableCollection< T >::Count ( ) const
inlinefinaloverridevirtualnoexcept

返回列表中的元素数量

返回
元素数量

实现了 sw::IListT< T >.

◆ GetAt() [1/2]

template<typename T >
virtual const T & sw::ObservableCollection< T >::GetAt ( int  index) const
inlinefinaloverridevirtual

获取指定索引处的const元素引用

参数
index元素索引
返回
const元素引用
异常
std::out_of_range索引超出范围

实现了 sw::IListT< T >.

◆ GetAt() [2/2]

template<typename T >
virtual T & sw::ObservableCollection< T >::GetAt ( int  index)
inlinefinaloverridevirtual

获取指定索引处的元素引用

参数
index元素索引
返回
元素引用
异常
std::out_of_range索引超出范围

实现了 sw::IListT< T >.

◆ GetCollectionChangedEventDelegate()

template<typename T >
virtual NotifyCollectionChangedEventHandler & sw::ObservableCollection< T >::GetCollectionChangedEventDelegate ( )
inlinefinaloverrideprotectedvirtual

获取集合变更事件委托的引用

注解
CollectionChanged事件使用该函数返回的委托来保存事件处理程序

实现了 sw::INotifyCollectionChanged.

◆ GetInternalVector() [1/2]

template<typename T >
const std::vector< T > & sw::ObservableCollection< T >::GetInternalVector ( ) const
inlinenoexcept

获取底层std::vector的const引用

返回
std::vector的const引用

◆ GetInternalVector() [2/2]

template<typename T >
std::vector< T > & sw::ObservableCollection< T >::GetInternalVector ( )
inlinenoexcept

获取底层std::vector的引用

返回
std::vector的引用

◆ IndexOf()

template<typename T >
int sw::ObservableCollection< T >::IndexOf ( const T value) const
inline

查找指定值在集合中首次出现的索引

参数
value要查找的值
返回
首次出现的索引,未找到返回-1

◆ Insert() [1/2]

template<typename T >
void sw::ObservableCollection< T >::Insert ( int  index,
const T value 
)
inline

在指定索引处插入元素,并触发添加通知

参数
index插入位置
value要插入的值
异常
std::out_of_range索引超出范围

◆ Insert() [2/2]

template<typename T >
void sw::ObservableCollection< T >::Insert ( int  index,
T &&  value 
)
inline

在指定索引处插入元素(移动语义),并触发添加通知

参数
index插入位置
value要插入的值
异常
std::out_of_range索引超出范围

◆ LastIndexOf()

template<typename T >
int sw::ObservableCollection< T >::LastIndexOf ( const T value) const
inline

查找指定值在集合中最后出现的索引

参数
value要查找的值
返回
最后出现的索引,未找到返回-1

◆ Move()

template<typename T >
void sw::ObservableCollection< T >::Move ( int  oldIndex,
int  newIndex 
)
inline

将元素从一个索引移动到另一个索引,并触发移动通知

参数
oldIndex要移动的元素原索引
newIndex移动后的元素索引
异常
std::out_of_range索引超出范围

◆ OnCollectionChanged()

template<typename T >
virtual void sw::ObservableCollection< T >::OnCollectionChanged ( NotifyCollectionChangedEventArgs args)
inlineprotectedvirtual

触发集合变更事件

参数
args集合变更事件参数

◆ Remove()

template<typename T >
bool sw::ObservableCollection< T >::Remove ( const T value)
inline

移除集合中首次出现的指定值,并在成功移除时触发移除通知

参数
value要移除的值
返回
成功移除返回true,未找到返回false

◆ RemoveAt()

template<typename T >
void sw::ObservableCollection< T >::RemoveAt ( int  index)
inline

移除指定索引处的元素,并触发移除通知

参数
index要移除的元素索引
异常
std::out_of_range索引超出范围

◆ Reserve()

template<typename T >
void sw::ObservableCollection< T >::Reserve ( int  newCapacity)
inline

预留至少指定数量的元素空间

参数
newCapacity要预留的容量,仅在大于当前容量时生效

◆ SetAt() [1/2]

template<typename T >
virtual void sw::ObservableCollection< T >::SetAt ( int  index,
const T value 
)
inlinefinaloverridevirtual

设置指定索引处的元素值

参数
index元素索引
value要设置的值
异常
std::out_of_range索引超出范围
std::logic_errorT不可拷贝赋值时

实现了 sw::IListT< T >.

◆ SetAt() [2/2]

template<typename T >
virtual void sw::ObservableCollection< T >::SetAt ( int  index,
T &&  value 
)
inlinefinaloverridevirtual

设置指定索引处的元素值(移动语义)

参数
index元素索引
value要设置的值
异常
std::out_of_range索引超出范围
std::logic_errorT不可移动赋值时

实现了 sw::IListT< T >.

◆ ToString()

template<typename T >
std::wstring sw::ObservableCollection< T >::ToString ( ) const
inline

将集合转换为字符串表示

返回
集合的字符串表示

该类的文档由以下文件生成: