SimpleWindow
载入中...
搜索中...
未找到
sw::FrameworkElement类 参考abstract

框架元素类,提供数据上下文和绑定功能 更多...

#include <FrameworkElement.h>

类 sw::FrameworkElement 继承关系图:
sw::ObservableObject sw::DynamicObject sw::INotifyObjectDead sw::INotifyPropertyChanged sw::WndBase sw::NotifyIcon sw::Timer sw::ToolTip sw::UIElement sw::BallonToolTip sw::Control sw::HwndWrapper sw::ItemsControl< StrList > sw::ItemsControl< TreeViewNode > sw::Animation sw::ButtonBase sw::DateTimePicker sw::HotKeyControl sw::ItemsControl< TItem > sw::MonthCalendar sw::ProgressBar sw::Slider sw::Splitter sw::StaticControl sw::StatusBar sw::SysLink sw::TabControl sw::TextBoxBase

Public 成员函数

bool AddBinding (BindingBase *binding)
 添加绑定对象
 
bool AddBinding (Binding *binding)
 添加绑定对象
 
bool AddBinding (DataBinding *binding)
 添加绑定到DataContext的绑定对象
 
bool RemoveBinding (FieldId propertyId)
 移除指定属性的绑定对象
 
template<typename T , typename TProperty >
bool RemoveBinding (TProperty T::*prop)
 移除指定属性的绑定对象
 
virtual FrameworkElementGetParent () const =0
 获取父元素
 
virtual int GetChildCount () const =0
 获取子元素数量
 
virtual FrameworkElementGetChildAt (int index) const =0
 获取指定索引处的子元素
 
- Public 成员函数 继承自 sw::ObservableObject
virtual ~ObservableObject ()
 析构时触发对象销毁事件
 
- Public 成员函数 继承自 sw::DynamicObject
 DynamicObject () noexcept
 默认构造函数
 
virtual ~DynamicObject ()
 析构函数
 
bool IsBoxedObject () const noexcept
 判断对象是否为装箱对象
 
std::type_index GetType () const
 获取对象的类型信息
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto DynamicCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto DynamicCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
- Public 成员函数 继承自 sw::INotifyObjectDead
virtual ~INotifyObjectDead ()=default
 默认析构函数
 
- Public 成员函数 继承自 sw::INotifyPropertyChanged
virtual ~INotifyPropertyChanged ()=default
 默认析构函数
 

Public 属性

const Event< DataContextChangedEventHandlerDataContextChanged
 数据上下文改变时触发该事件
 
const Property< DynamicObject * > DataContext
 数据上下文
 
const ReadOnlyProperty< DynamicObject * > CurrentDataContext
 当前元素的有效数据上下文
 
- Public 属性 继承自 sw::INotifyObjectDead
const Event< ObjectDeadEventHandlerObjectDead
 对象销毁时触发该事件
 
- Public 属性 继承自 sw::INotifyPropertyChanged
const Event< PropertyChangedEventHandlerPropertyChanged
 当属性值更改时触发的事件
 

Protected 成员函数

 FrameworkElement ()
 初始化FrameworkElement
 
 FrameworkElement (const FrameworkElement &)=delete
 
 FrameworkElement (FrameworkElement &&)=delete
 
FrameworkElementoperator= (const FrameworkElement &)=delete
 
FrameworkElementoperator= (FrameworkElement &&)=delete
 
virtual void OnCurrentDataContextChanged (DynamicObject *oldDataContext)
 当CurrentDataContext更改时调用此函数
 
- Protected 成员函数 继承自 sw::ObservableObject
virtual PropertyChangedEventHandlerGetPropertyChangedEventDelegate () override final
 获取属性更改事件委托的引用
 
virtual ObjectDeadEventHandlerGetObjectDeadEventDelegate () override final
 获取对象销毁事件委托的引用
 
void RaisePropertyChanged (FieldId propertyId)
 触发属性更改通知事件
 
template<typename T , typename TProperty >
void RaisePropertyChanged (TProperty T::*property)
 触发属性更改通知事件
 

详细描述

框架元素类,提供数据上下文和绑定功能

成员函数说明

◆ AddBinding() [1/3]

bool sw::FrameworkElement::AddBinding ( Binding binding)

添加绑定对象

返回
若函数成功则返回true,否则返回false
注解
绑定对象的生命周期将由当前元素管理,请勿与其他对象共享
该函数会将绑定的目标对象设置为当前元素,若未指定源对象则会将DataContext作为源对象
同一个属性只能设置一个绑定,若该属性已存在绑定则会被新的绑定覆盖

◆ AddBinding() [2/3]

bool sw::FrameworkElement::AddBinding ( BindingBase binding)

添加绑定对象

返回
若函数成功则返回true,否则返回false
注解
绑定对象的生命周期将由当前元素管理,请勿与其他对象共享
请确保绑定对象的目标属性为当前元素的属性,该函数内部不会对此进行检查
同一个属性只能设置一个绑定,若该属性已存在绑定则会被新的绑定覆盖

◆ AddBinding() [3/3]

bool sw::FrameworkElement::AddBinding ( DataBinding binding)

添加绑定到DataContext的绑定对象

返回
若函数成功则返回true,否则返回false
注解
绑定对象的生命周期将由当前元素管理,请勿与其他对象共享
同一个属性只能设置一个绑定,若该属性已存在绑定则会被新的绑定覆盖

◆ GetChildAt()

virtual FrameworkElement & sw::FrameworkElement::GetChildAt ( int  index) const
pure virtual

获取指定索引处的子元素

参数
index子元素索引
异常
std::out_of_range如果索引超出范围

sw::WndBase , 以及 sw::UIElement 内被实现.

◆ GetChildCount()

virtual int sw::FrameworkElement::GetChildCount ( ) const
pure virtual

获取子元素数量

返回
子元素数量

sw::WndBase , 以及 sw::UIElement 内被实现.

◆ GetParent()

virtual FrameworkElement * sw::FrameworkElement::GetParent ( ) const
pure virtual

获取父元素

返回
父元素指针,如果没有父元素则返回nullptr

sw::WndBase , 以及 sw::UIElement 内被实现.

◆ OnCurrentDataContextChanged()

virtual void sw::FrameworkElement::OnCurrentDataContextChanged ( DynamicObject oldDataContext)
protectedvirtual

当CurrentDataContext更改时调用此函数

参数
oldDataContext旧的数据上下文值

◆ RemoveBinding() [1/2]

bool sw::FrameworkElement::RemoveBinding ( FieldId  propertyId)

移除指定属性的绑定对象

返回
若函数成功则返回true,否则返回false

◆ RemoveBinding() [2/2]

template<typename T , typename TProperty >
bool sw::FrameworkElement::RemoveBinding ( TProperty T::*  prop)
inline

移除指定属性的绑定对象

返回
若函数成功则返回true,否则返回false

类成员变量说明

◆ CurrentDataContext

const ReadOnlyProperty<DynamicObject *> sw::FrameworkElement::CurrentDataContext

当前元素的有效数据上下文

注解
若当前元素的DataContext不为nullptr则返回该值,否则递归获取父元素的DataContext

该类的文档由以下文件生成: