SimpleWindow
载入中...
搜索中...
未找到
EventHandlerWrapper.h
1#pragma once
2
3#include "RoutedEvent.h"
4#include <type_traits>
5#include <typeindex>
6#include <utility>
7
8namespace sw
9{
14 template <typename TEventArgs, typename = void>
16
20 template <typename TEventArgs>
24 std::is_base_of<RoutedEventArgs, TEventArgs>::value>::type>
25 : public ICallable<void(UIElement &, RoutedEventArgs &)>
26 {
27 private:
32
33 public:
42
51
57 : _handler(other._handler)
58 {
59 }
60
66 : _handler(std::move(other._handler))
67 {
68 }
69
74 virtual void Invoke(UIElement &sender, RoutedEventArgs &args) const override
75 {
76 if (_handler) _handler(sender, static_cast<TEventArgs &>(args));
77 }
78
82 virtual ICallable<void(UIElement &, RoutedEventArgs &)> *Clone() const override
83 {
84 return new RoutedEventHandlerWrapper(*this);
85 }
86
90 virtual std::type_index GetType() const override
91 {
93 }
94
100 virtual bool Equals(const ICallable<void(UIElement &, RoutedEventArgs &)> &other) const override
101 {
102 if (this == &other) {
103 return true;
104 }
105 if (GetType() != other.GetType()) {
106 return false;
107 }
108 const auto &otherWrapper = static_cast<const RoutedEventHandlerWrapper &>(other);
109 return _handler.Equals(otherWrapper._handler);
110 }
111 };
112}
值转换器接口
Definition IValueConverter.h:14
RoutedEventHandlerWrapper(Action< UIElement &, TEventArgs & > &&handler)
构造函数,移动事件处理函数
Definition EventHandlerWrapper.h:47
virtual std::type_index GetType() const override
获取当前可调用对象的类型信息
Definition EventHandlerWrapper.h:90
virtual void Invoke(UIElement &sender, RoutedEventArgs &args) const override
调用事件处理函数
Definition EventHandlerWrapper.h:74
RoutedEventHandlerWrapper(const Action< UIElement &, TEventArgs & > &handler)
构造函数,拷贝事件处理函数
Definition EventHandlerWrapper.h:38
RoutedEventHandlerWrapper(RoutedEventHandlerWrapper &&other) noexcept
移动构造函数
Definition EventHandlerWrapper.h:65
RoutedEventHandlerWrapper(const RoutedEventHandlerWrapper &other)
拷贝构造函数
Definition EventHandlerWrapper.h:56
virtual ICallable< void(UIElement &, RoutedEventArgs &)> * Clone() const override
克隆当前可调用对象
Definition EventHandlerWrapper.h:82
virtual bool Equals(const ICallable< void(UIElement &, RoutedEventArgs &)> &other) const override
判断当前可调用对象是否与另一个可调用对象相等
Definition EventHandlerWrapper.h:100
路由事件处理函数包装类前置声明
Definition EventHandlerWrapper.h:15
表示界面中的元素
Definition UIElement.h:67
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
Definition Delegate.h:17
路由事件的参数
Definition RoutedEvent.h:157