SimpleWindow
载入中...
搜索中...
未找到
ObservableObject.h
1#pragma once
2
3#include "INotifyObjectDead.h"
4#include "INotifyPropertyChanged.h"
5
6namespace sw
7{
12 public INotifyObjectDead,
14 {
15 private:
19 PropertyChangedEventHandler _propertyChanged;
20
24 ObjectDeadEventHandler _objectDead;
25
26 public:
30 ObservableObject() = default;
31
37
43
49 : DynamicObject(std::move(other)),
50 INotifyObjectDead(std::move(other)),
51 INotifyPropertyChanged(std::move(other)),
52 _propertyChanged(std::move(other._propertyChanged)),
53 _objectDead(std::move(other._objectDead))
54 {
55 }
56
62 {
63 if (this != &other) {
64 DynamicObject::operator=(std::move(other));
65 _propertyChanged = std::move(other._propertyChanged);
66 _objectDead = std::move(other._objectDead);
67 }
68 return *this;
69 }
70
75 {
76 if (_objectDead) {
78 _objectDead(*this, args);
79 }
80 }
81
82 protected:
88 {
89 return _propertyChanged;
90 }
91
97 {
98 return _objectDead;
99 }
100
106 {
107 if (_propertyChanged) {
109 args.propertyId = propertyId;
110 _propertyChanged(*this, args);
111 }
112 }
113
120 template <typename T, typename TProperty>
126 };
127}
动态对象基类
Definition Reflection.h:27
DynamicObject() noexcept
默认构造函数
Definition Reflection.h:44
对象销毁通知接口
Definition INotifyObjectDead.h:20
属性变更通知接口
Definition INotifyPropertyChanged.h:30
值转换器接口
Definition IValueConverter.h:14
可观察对象基类,实现属性更改通知功能
Definition ObservableObject.h:14
virtual ~ObservableObject()
析构时触发对象销毁事件
Definition ObservableObject.h:74
ObservableObject & operator=(ObservableObject &&other) noexcept
移动赋值运算符
Definition ObservableObject.h:61
virtual PropertyChangedEventHandler & GetPropertyChangedEventDelegate() override final
获取属性更改事件委托的引用
Definition ObservableObject.h:87
ObservableObject(const ObservableObject &)=delete
禁用拷贝构造
void RaisePropertyChanged(TProperty T::*property)
触发属性更改通知事件
Definition ObservableObject.h:121
ObservableObject()=default
默认构造函数
void RaisePropertyChanged(FieldId propertyId)
触发属性更改通知事件
Definition ObservableObject.h:105
ObservableObject & operator=(const ObservableObject &)=delete
禁用拷贝赋值
ObservableObject(ObservableObject &&other) noexcept
移动构造函数
Definition ObservableObject.h:48
virtual ObjectDeadEventHandler & GetObjectDeadEventDelegate() override final
获取对象销毁事件委托的引用
Definition ObservableObject.h:96
static FieldId GetFieldId(TField T::*field) noexcept
获取字段的唯一标识符
Definition Reflection.h:1095
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
事件参数结构体
Definition Event.h:286
表示字段的唯一标识符
Definition Reflection.h:1032
属性更改事件参数
Definition INotifyPropertyChanged.h:13