3#include "FrameworkElement.h"
21 std::unique_ptr<Binding> _innerBinding;
32 UpdateDataContextBinding();
33 RegisterNotifications();
42 UnregisterNotifications();
51 return _innerBinding->UpdateTarget();
60 return _innerBinding->UpdateSource();
68 return _innerBinding->GetTargetPropertyId();
76 return _innerBinding->GetSourcePropertyId();
85 return _targetElement;
94 if (_targetElement !=
element) {
95 UnregisterNotifications();
97 UpdateDataContextBinding();
98 RegisterNotifications();
106 void RegisterNotifications()
108 if (_targetElement ==
nullptr) {
122 void UnregisterNotifications()
124 if (_targetElement ==
nullptr) {
138 void UpdateDataContextBinding()
140 if (_targetElement ==
nullptr) {
141 _innerBinding->SetBindingObjects(
nullptr,
nullptr);
150 void OnTargetElementDead(INotifyObjectDead &sender, EventArgs &e)
158 void OnTargetElementDataContextChanged(FrameworkElement &sender, DataContextChangedEventArgs &e)
160 UpdateDataContextBinding();
数据绑定基类
Definition Binding.h:30
数据绑定类
Definition Binding.h:65
数据绑定,用于UI元素与DataContext之间的属性绑定
Definition DataBinding.h:11
virtual FieldId GetTargetPropertyId() const override
获取目标属性ID
Definition DataBinding.h:66
FrameworkElement * GetTargetElement() const
获取目标元素
Definition DataBinding.h:83
virtual bool UpdateSource() override
更新源属性的值
Definition DataBinding.h:58
virtual ~DataBinding()
析构函数
Definition DataBinding.h:40
static DataBinding * Create(FrameworkElement *targetElement, Binding *binding)
创建数据绑定对象
Definition DataBinding.h:171
static auto Create(TTargetProperty TTargetObject::*targetProperty, TSourceProperty TSourceObject::*sourceProperty, BindingMode mode, IValueConverter< typename TSourceProperty::TValue, typename TTargetProperty::TValue > *converter=nullptr) -> typename std::enable_if< _IsProperty< TTargetProperty >::value &&_IsProperty< TSourceProperty >::value &&std::is_base_of< DynamicObject, TTargetObject >::value &&std::is_base_of< DynamicObject, TSourceObject >::value &&std::is_same< typename TTargetProperty::TValue, typename TSourceProperty::TValue >::value, DataBinding * >::type
创建数据绑定对象
Definition DataBinding.h:191
void SetTargetElement(FrameworkElement *element)
设置目标元素
Definition DataBinding.h:92
virtual FieldId GetSourcePropertyId() const override
获取源属性ID
Definition DataBinding.h:74
static auto Create(TTargetProperty TTargetObject::*targetProperty, TSourceProperty TSourceObject::*sourceProperty, BindingMode mode, IValueConverter< typename TSourceProperty::TValue, typename TTargetProperty::TValue > *converter) -> typename std::enable_if< _IsProperty< TTargetProperty >::value &&_IsProperty< TSourceProperty >::value &&std::is_base_of< DynamicObject, TTargetObject >::value &&std::is_base_of< DynamicObject, TSourceObject >::value &&!std::is_same< typename TTargetProperty::TValue, typename TSourceProperty::TValue >::value, DataBinding * >::type
创建数据绑定对象
Definition DataBinding.h:220
virtual bool UpdateTarget() override
更新目标属性的值
Definition DataBinding.h:49
动态对象基类
Definition Reflection.h:27
框架元素类,提供数据上下文和绑定功能
Definition FrameworkElement.h:33
const Event< DataContextChangedEventHandler > DataContextChanged
数据上下文改变时触发该事件
Definition FrameworkElement.h:54
const ReadOnlyProperty< DynamicObject * > CurrentDataContext
当前元素的有效数据上下文
Definition FrameworkElement.h:65
const Event< ObjectDeadEventHandler > ObjectDead
对象销毁时触发该事件
Definition INotifyObjectDead.h:25
值转换器接口
Definition IValueConverter.h:14
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
EventHandler< INotifyObjectDead > ObjectDeadEventHandler
对象销毁事件处理程序类型
Definition INotifyObjectDead.h:14
BindingMode
绑定模式枚举
Definition Binding.h:12
EventHandler< FrameworkElement, DataContextChangedEventArgs > DataContextChangedEventHandler
数据上下文更改事件处理函数类型
Definition FrameworkElement.h:27
表示字段的唯一标识符
Definition Reflection.h:1020
判断类型是否为属性的辅助模板
Definition Property.h:95