SimpleWindow
载入中...
搜索中...
未找到
FrameworkElement.h
1#pragma once
2
3#include "Binding.h"
4#include "ITag.h"
5#include "ObservableObject.h"
6#include "Variant.h"
7#include <unordered_map>
8
9namespace sw
10{
11 // 前向声明
12 class DataBinding;
13 class FrameworkElement;
14
24
30
35 public ITag<Variant>
36 {
37 private:
41 std::unordered_map<FieldId, std::unique_ptr<BindingBase>> _bindings{};
42
46 Variant _tag = nullptr;
47
51 Variant _dataContext = nullptr;
52
56 DataContextChangedEventHandler _dataContextChanged;
57
58 public:
63
68
76
82
83 protected:
88
89 // 删除拷贝构造函数
90 FrameworkElement(const FrameworkElement &) = delete;
91
92 // 删除移动构造函数
94
95 // 删除拷贝赋值运算符
96 FrameworkElement &operator=(const FrameworkElement &) = delete;
97
98 // 删除移动赋值运算符
99 FrameworkElement &operator=(FrameworkElement &&) = delete;
100
101 public:
110
119
127
132 bool RemoveBinding(FieldId propertyId);
133
138 template <typename T, typename TProperty>
141
142 public:
147
152
153 protected:
159
160 public:
166
172
179 };
180}
数据绑定基类
Definition Binding.h:30
数据绑定类
Definition Binding.h:65
数据绑定,用于UI元素与DataContext之间的属性绑定
Definition DataBinding.h:11
动态对象基类
Definition Reflection.h:27
框架元素类,提供数据上下文和绑定功能
Definition FrameworkElement.h:36
bool AddBinding(DataBinding *binding)
添加绑定到DataContext的绑定对象
virtual FrameworkElement * GetParent() const =0
获取逻辑树中的父元素
bool AddBinding(Binding *binding)
添加绑定对象
const Event< DataContextChangedEventHandler > DataContextChanged
数据上下文改变时触发该事件
Definition FrameworkElement.h:62
virtual int GetChildCount() const =0
获取逻辑树中的子元素数量
bool AddBinding(BindingBase *binding)
添加绑定对象
const Property< Variant > Tag
自定义数据标签,可用于存储任意用户数据
Definition FrameworkElement.h:67
virtual FrameworkElement & GetChildAt(int index) const =0
获取逻辑树中指定索引处的子元素
const ReadOnlyProperty< DynamicObject * > CurrentDataContext
当前元素的有效数据上下文
Definition FrameworkElement.h:81
bool RemoveBinding(TProperty T::*prop)
移除指定属性的绑定对象
Definition FrameworkElement.h:139
bool RemoveBinding(FieldId propertyId)
移除指定属性的绑定对象
const Property< Variant > DataContext
数据上下文
Definition FrameworkElement.h:75
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:1095
通用变体类型容器,类型擦除地持有任意类型对象
Definition Variant.h:36
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
数据上下文更改事件参数
Definition FrameworkElement.h:18
DynamicObject * oldDataContext
旧的数据上下文值
Definition FrameworkElement.h:22
事件参数结构体
Definition Event.h:286
表示字段的唯一标识符
Definition Reflection.h:1032