SimpleWindow
载入中...
搜索中...
未找到
FrameworkElement.h
1#pragma once
2
3#include "Binding.h"
4#include "ObservableObject.h"
5#include <unordered_map>
6
7namespace sw
8{
9 // 前向声明
10 class DataBinding;
11 class FrameworkElement;
12
22
28
33 {
34 private:
38 std::unordered_map<FieldId, std::unique_ptr<BindingBase>> _bindings{};
39
43 DynamicObject *_dataContext = nullptr;
44
48 DataContextChangedEventHandler _dataContextChanged;
49
50 public:
55
60
66
67 protected:
72
73 // 删除拷贝构造函数
74 FrameworkElement(const FrameworkElement &) = delete;
75
76 // 删除移动构造函数
78
79 // 删除拷贝赋值运算符
80 FrameworkElement &operator=(const FrameworkElement &) = delete;
81
82 // 删除移动赋值运算符
83 FrameworkElement &operator=(FrameworkElement &&) = delete;
84
85 public:
94
103
111
116 bool RemoveBinding(FieldId propertyId);
117
122 template <typename T, typename TProperty>
125
126 protected:
131 virtual void OnCurrentDataContextChanged(DynamicObject *oldDataContext);
132
133 public:
138 virtual FrameworkElement *GetParent() const = 0;
139
144 virtual int GetChildCount() const = 0;
145
151 virtual FrameworkElement &GetChildAt(int index) const = 0;
152 };
153}
数据绑定基类
Definition Binding.h:30
数据绑定类
Definition Binding.h:65
数据绑定,用于UI元素与DataContext之间的属性绑定
Definition DataBinding.h:11
动态对象基类
Definition Reflection.h:27
框架元素类,提供数据上下文和绑定功能
Definition FrameworkElement.h:33
bool AddBinding(DataBinding *binding)
添加绑定到DataContext的绑定对象
virtual FrameworkElement * GetParent() const =0
获取父元素
const Property< DynamicObject * > DataContext
数据上下文
Definition FrameworkElement.h:59
bool AddBinding(Binding *binding)
添加绑定对象
const Event< DataContextChangedEventHandler > DataContextChanged
数据上下文改变时触发该事件
Definition FrameworkElement.h:54
virtual int GetChildCount() const =0
获取子元素数量
bool AddBinding(BindingBase *binding)
添加绑定对象
virtual FrameworkElement & GetChildAt(int index) const =0
获取指定索引处的子元素
const ReadOnlyProperty< DynamicObject * > CurrentDataContext
当前元素的有效数据上下文
Definition FrameworkElement.h:65
bool RemoveBinding(TProperty T::*prop)
移除指定属性的绑定对象
Definition FrameworkElement.h:123
bool RemoveBinding(FieldId propertyId)
移除指定属性的绑定对象
virtual void OnCurrentDataContextChanged(DynamicObject *oldDataContext)
当CurrentDataContext更改时调用此函数
FrameworkElement()
初始化FrameworkElement
值转换器接口
Definition IValueConverter.h:14
可观察对象基类,实现属性更改通知功能
Definition ObservableObject.h:14
static FieldId GetFieldId(TField T::*field) noexcept
获取字段的唯一标识符
Definition Reflection.h:1083
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
数据上下文更改事件参数
Definition FrameworkElement.h:16
DynamicObject * oldDataContext
旧的数据上下文值
Definition FrameworkElement.h:20
事件参数结构体
Definition Event.h:286
表示字段的唯一标识符
Definition Reflection.h:1020