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
32 // 删除拷贝构造函数
33 ObservableObject(const ObservableObject &) = delete;
34
35 // 删除移动构造函数
37
38 // 删除拷贝赋值运算符
39 ObservableObject &operator=(const ObservableObject &) = delete;
40
41 // 删除移动赋值运算符
42 ObservableObject &operator=(ObservableObject &&) = delete;
43
48 {
49 if (_objectDead) {
51 _objectDead(*this, args);
52 }
53 }
54
55 protected:
61 {
62 return _propertyChanged;
63 }
64
70 {
71 return _objectDead;
72 }
73
79 {
80 if (_propertyChanged) {
82 args.propertyId = propertyId;
83 _propertyChanged(*this, args);
84 }
85 }
86
93 template <typename T, typename TProperty>
99 };
100}
动态对象基类
Definition Reflection.h:27
对象销毁通知接口
Definition INotifyObjectDead.h:20
属性变更通知接口
Definition INotifyPropertyChanged.h:30
值转换器接口
Definition IValueConverter.h:14
可观察对象基类,实现属性更改通知功能
Definition ObservableObject.h:14
virtual ~ObservableObject()
析构时触发对象销毁事件
Definition ObservableObject.h:47
virtual PropertyChangedEventHandler & GetPropertyChangedEventDelegate() override final
获取属性更改事件委托的引用
Definition ObservableObject.h:60
void RaisePropertyChanged(TProperty T::*property)
触发属性更改通知事件
Definition ObservableObject.h:94
ObservableObject()=default
默认构造函数
void RaisePropertyChanged(FieldId propertyId)
触发属性更改通知事件
Definition ObservableObject.h:78
virtual ObjectDeadEventHandler & GetObjectDeadEventDelegate() override final
获取对象销毁事件委托的引用
Definition ObservableObject.h:69
static FieldId GetFieldId(TField T::*field) noexcept
获取字段的唯一标识符
Definition Reflection.h:1230
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
事件参数结构体
Definition Event.h:294
表示字段的唯一标识符
Definition Reflection.h:1167
属性更改事件参数
Definition INotifyPropertyChanged.h:13