SimpleWindow
载入中...
搜索中...
未找到
FrameworkElement.h
1#pragma once
2
3#include "Binding.h"
4#include "ITag.h"
5#include "ObservableObject.h"
6#include "SelfBinding.h"
7#include "Variant.h"
8#include <unordered_map>
9
10namespace sw
11{
12 // 前向声明
13 class DataBinding;
14 class FrameworkElement;
15
25
31
36 public ITag<Variant>
37 {
38 private:
42 std::unordered_map<FieldId, std::unique_ptr<BindingBase>> _bindings{};
43
47 Variant _tag = nullptr;
48
52 Variant _dataContext = nullptr;
53
57 DataContextChangedEventHandler _dataContextChanged;
58
59 public:
64
69
77
83
84 protected:
89
90 // 删除拷贝构造函数
91 FrameworkElement(const FrameworkElement &) = delete;
92
93 // 删除移动构造函数
95
96 // 删除拷贝赋值运算符
97 FrameworkElement &operator=(const FrameworkElement &) = delete;
98
99 // 删除移动赋值运算符
100 FrameworkElement &operator=(FrameworkElement &&) = delete;
101
102 public:
111
120
128
136
141 bool RemoveBinding(FieldId propertyId);
142
147 template <typename T, typename TProperty>
150
151 public:
156
161
162 protected:
167
173
174 public:
180
186
193 };
194}
数据绑定基类
Definition Binding.h:31
数据绑定类
Definition Binding.h:66
数据绑定,用于UI元素与DataContext之间的属性绑定
Definition DataBinding.h:11
动态对象基类
Definition Reflection.h:27
框架元素类,提供数据上下文和绑定功能
Definition FrameworkElement.h:37
bool AddBinding(DataBinding *binding)
添加绑定到DataContext的绑定对象
virtual FrameworkElement * GetParent() const =0
获取逻辑树中的父元素
bool AddBinding(Binding *binding)
添加绑定对象
const Event< DataContextChangedEventHandler > DataContextChanged
数据上下文改变时触发该事件
Definition FrameworkElement.h:63
virtual int GetChildCount() const =0
获取逻辑树中的子元素数量
bool AddBinding(BindingBase *binding)
添加绑定对象
const Property< Variant > Tag
自定义数据标签,可用于存储任意用户数据
Definition FrameworkElement.h:68
virtual FrameworkElement & GetChildAt(int index) const =0
获取逻辑树中指定索引处的子元素
bool AddBinding(SelfBinding *binding)
添加自绑定对象
const ReadOnlyProperty< DynamicObject * > CurrentDataContext
当前元素的有效数据上下文
Definition FrameworkElement.h:82
bool RemoveBinding(TProperty T::*prop)
移除指定属性的绑定对象
Definition FrameworkElement.h:148
bool RemoveBinding(FieldId propertyId)
移除指定属性的绑定对象
const Property< Variant > DataContext
数据上下文
Definition FrameworkElement.h:76
virtual void OnTagChanged()
当Tag更改时调用此函数
virtual void OnCurrentDataContextChanged(DynamicObject *oldDataContext)
当CurrentDataContext更改时调用此函数
virtual Variant GetTag() const override final
获取Tag
FrameworkElement()
初始化FrameworkElement
virtual void SetTag(const Variant &tag) override final
设置Tag
Tag接口
Definition ITag.h:12
值转换器接口
Definition IValueConverter.h:14
可观察对象基类,实现属性更改通知功能
Definition ObservableObject.h:14
static FieldId GetFieldId(TField T::*field) noexcept
获取字段的唯一标识符
Definition Reflection.h:1230
自绑定类,用于同一对象内部属性之间的绑定
Definition SelfBinding.h:11
通用变体类型容器,类型擦除地持有任意类型对象
Definition Variant.h:36
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
数据上下文更改事件参数
Definition FrameworkElement.h:19
DynamicObject * oldDataContext
旧的数据上下文值
Definition FrameworkElement.h:23
事件参数结构体
Definition Event.h:294
表示字段的唯一标识符
Definition Reflection.h:1167