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 패턴을 지 원하는 두 개의 가상 이벤트에 대 한 제공 ClockwiseSpin
하 고 CounterclockwiseSpin
전용을 포함 하는 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 이벤트의 ID를 확인한 후 구현에서 프라이빗 클래스 처리기를 호출해야 합니다. 클래스 처리기는 발신자의 이벤트를 통해 +=
추가하는 기존의 이벤트 패턴을 통해 추가되는 수신기에 대해 해당 이벤트를 처리하는 데 사용되는 것과 동일한 클래스 처리기일 수 있습니다. 다음 예제 섹션에서는 대략적인 구현 템플릿을 제공합니다.