IWeakEventListener.ReceiveWeakEvent(Type, Object, EventArgs) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
接收集中事件管理器中的事件。
public:
bool ReceiveWeakEvent(Type ^ managerType, System::Object ^ sender, EventArgs ^ e);
public bool ReceiveWeakEvent (Type managerType, object sender, EventArgs e);
abstract member ReceiveWeakEvent : Type * obj * EventArgs -> bool
Public Function ReceiveWeakEvent (managerType As Type, sender As Object, e As EventArgs) As Boolean
参数
- managerType
- Type
调用此方法的 WeakEventManager 的类型。
- sender
- Object
发出该事件的对象。
事件数据。
返回
如果侦听器已对事件进行了处理,则为 true
。 WPF 中的处理将侦听器注册侦听器视为一个错误 WeakEventManager ,而侦听器不处理该事件。 无论如何,如果此方法接收到它未能识别或处理的事件,它都应该返回 false
。
示例
以下示例实现 ReceiveWeakEvent ,以便为两个假设事件提供 WeakEvent 模式支持,并且CounterclockwiseSpin
每个事件ClockwiseSpin
都有一个专用WeakEventManager (未) 显示。 此实现为每个受支持的事件调用类处理程序存根,将事件数据强制转换 (在本例中,这两个事件共享一个事件数据类型 SpinEventArgs
) 。 如果收到的事件不是预期的事件,则实现将返回 false
。
bool IWeakEventListener.ReceiveWeakEvent(Type managerType, object sender, EventArgs e)
{
if (managerType == typeof(ClockwiseSpinEventManager))
{
OnClockwiseSpin(sender, (SpinEventArgs)e);
}
else if (managerType == typeof(CounterclockwiseSpinEventManager))
{
OnCounterclockwiseSpin(sender, (SpinEventArgs)e);
}
else
{
return false; // unrecognized event
}
return true;
}
private void OnClockwiseSpin(object sender, SpinEventArgs e) {
//do something here...
}
private void OnCounterclockwiseSpin(object sender, SpinEventArgs e) {
//do something here...
}
Private Function ReceiveWeakEvent(ByVal managerType As Type, ByVal sender As Object, ByVal e As EventArgs) As Boolean Implements IWeakEventListener.ReceiveWeakEvent
If managerType Is GetType(ClockwiseSpinEventManager) Then
OnClockwiseSpin(sender, CType(e, SpinEventArgs))
ElseIf managerType Is GetType(CounterclockwiseSpinEventManager) Then
OnCounterclockwiseSpin(sender, CType(e, SpinEventArgs))
Else
Return False ' unrecognized event
End If
Return True
End Function
Private Sub OnClockwiseSpin(ByVal sender As Object, ByVal e As SpinEventArgs)
'do something here...
End Sub
Private Sub OnCounterclockwiseSpin(ByVal sender As Object, ByVal e As SpinEventArgs)
'do something here...
End Sub
实施者说明
此方法旨在接收接收方位于侦听器列表中的所有可能事件。 特别是如果为侦听多个事件的类实现,则必须检查传入 managerType
参数的类型,以便知道调用对应于哪个事件。 这就是为什么要成为模式一部分的每个事件都必须有一个专用 WeakEventManager的 。 此外, e
参数类型化为常规 EventArgs。 因此,为了从事件数据中获取任何特定属性,实现需要强制转换为特定事件数据类型。
通常,在根据 WeakEventManager 类型检查事件的标识后,实现应调用私有类处理程序。 可想而知,类处理程序可以是用于处理侦听器事件的类处理程序,这些侦听器是通过 添加到发送方上的 事件的传统事件模式添加 +=
的。 以下示例部分提供了大致的实现模板。