IWeakEventListener.ReceiveWeakEvent(Type, Object, EventArgs) Methode

Definition

Empfängt Ereignisse vom zentralen Ereignis-Manager.Receives events from the centralized event manager.

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

Parameter

managerType
Type

Der Typ des WeakEventManager, der diese Methode aufruft.The type of the WeakEventManager calling this method.

sender
Object

Das Objekt, das das Ereignis ausgelöst hat.Object that originated the event.

e
EventArgs

Ereignisdaten.Event data.

Gibt zurück

true, wenn das Ereignis vom Listener behandelt wurde.true if the listener handled the event. Das Registrieren eines Listeners für ein Ereignis, das vom Listener nicht behandelt wird, wird von der WeakEventManager-Behandlung in WPFWPF als Fehler angesehen.It is considered an error by the WeakEventManager handling in WPFWPF to register a listener for an event that the listener does not handle. Die Methode sollte jedoch unabhängig davon false zurückgeben, wenn ein Ereignis empfangen wird, das nicht erkannt oder nicht behandelt werden kann.Regardless, the method should return false if it receives an event that it does not recognize or handle.

Beispiele

Im folgenden Beispiel wird ReceiveWeakEvent implementiert, um die Unterstützung von WeakEvent- ClockwiseSpin Mustern für zwei hypothetische Ereignisse WeakEventManager bereitzustellen, und CounterclockwiseSpin jede verfügt über eine dedizierte (nicht angezeigt)The following example implements ReceiveWeakEvent to provide WeakEvent pattern support for two hypothetical events ClockwiseSpin and CounterclockwiseSpin that each have a dedicated WeakEventManager (not shown). Diese Implementierung ruft klassenhandlerstubdaten für jedes unterstützte Ereignis auf und wandelt die Ereignisdaten um (in diesem Fall verwenden die SpinEventArgsbeiden Ereignisse einen Ereignis Datentyp gemeinsam).This implementation calls class handler stubs for each supported event, casting the event data (in this case the two events share an event data type SpinEventArgs). Die-Implementierung false gibt zurück, wenn das empfangene Ereignis nicht erwartet wird.The implementation returns false if the event received is not one that is expected.

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

Hinweise für Ausführende

Diese Methode soll alle möglichen Ereignisse empfangen, bei denen sich der Empfänger in einer Listenerliste befindet.This method is intended to receive all possible events where the receiver is in a listener list. Insbesondere bei der Implementierung von für eine Klasse, die mehr als ein Ereignis überwacht, müssen Sie den Typ des eingehenden managerType Parameters überprüfen, um zu ermitteln, welchem Ereignis der-Befehl entspricht.Particularly if implementing for a class that is listening for more than one event, you must check the type of the incoming managerType parameter in order to know which event the call corresponds to. Aus diesem Grund muss jedes Ereignis, das Teil des Musters sein soll, über ein dediziertes WeakEventManagerverfügen.This is why each event that is to be part of the pattern must have a dedicated WeakEventManager. Außerdem wird der e -Parameter als allgemeine EventArgstypisiert.Also, the e parameter is typed as the general EventArgs. Um daher bestimmte Eigenschaften aus den Ereignisdaten zu erhalten, muss Ihre Implementierung in den spezifischen Ereignis Datentyp umgewandelt werden.Therefore, in order get any specific properties out of the event data, your implementation will need to cast to the specific event data type.

Nach der Überprüfung der Identität des Ereignisses basierend auf dem WeakEventManager Typ sollte Ihre Implementierung in der Regel einen privaten Klassen Handler aufzurufen.Typically, after checking for the identity of the event based on the WeakEventManager type, your implementation should call a private class handler. Der Klassen Handler ist möglicherweise der gleiche Klassen Handler, der verwendet wird, um dieses Ereignis für Listener zu verarbeiten, die über das konventionelle Ereignis Muster hinzugefügt werden += , um dem-Ereignis für den Absender das Hinzufügen von Via zum-Ereignis hinzuzufügen.Your class handler could conceivably be the very same class handler that is used to handle that event for listeners that are added through the conventional event pattern of adding via += to the event on the sender. Der folgende Beispiel Abschnitt enthält eine grobe Implementierungs Vorlage.The following example section provides a rough implementation template.

Gilt für:

Siehe auch