IWeakEventListener.ReceiveWeakEvent(Type, Object, EventArgs) Méthode

Définition

Reçoit des événements du gestionnaire d'événements centralisé.

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

Paramètres

managerType
Type

Le type du WeakEventManager qui appelle cette méthode.

sender
Object

Objet à l'origine de l'événement.

e
EventArgs

Donnée d’événement.

Retours

true si l'écouteur a géré l'événement. Il est considéré comme une erreur par la WeakEventManager gestion dans WPF d’inscrire un écouteur pour un événement que l’écouteur ne gère pas. La méthode doit néanmoins toujours retourner la valeur false si elle reçoit un événement qu'elle ne reconnaît ou ne gère pas.

Exemples

L’exemple suivant implémente pour fournir la prise en charge du modèle WeakEvent pour deux événements hypothétiques ReceiveWeakEventClockwiseSpin et CounterclockwiseSpin qui ont chacun un dédié WeakEventManager (non affiché). Cette implémentation appelle des stubs de gestionnaire de classe pour chaque événement pris en charge, en cas de cast des données d’événement (dans ce cas, les deux événements partagent un type SpinEventArgsde données d’événement ). L’implémentation retourne false si l’événement reçu n’est pas attendu.

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

Notes pour les responsables de l’implémentation

Cette méthode est destinée à recevoir tous les événements possibles lorsque le récepteur se trouve dans une liste d’écouteurs. En particulier, si vous implémentez pour une classe qui écoute plusieurs événements, vous devez vérifier le type du paramètre entrant managerType afin de savoir à quel événement correspond l’appel. C’est pourquoi chaque événement qui doit faire partie du modèle doit avoir un dédié WeakEventManager. En outre, le e paramètre est typé en tant que général EventArgs. Par conséquent, pour obtenir des propriétés spécifiques à partir des données d’événement, votre implémentation doit être convertie en type de données d’événement spécifique.

En règle générale, après avoir vérifié l’identité de l’événement en fonction du WeakEventManager type, votre implémentation doit appeler un gestionnaire de classe privé. Votre gestionnaire de classe peut être le même gestionnaire de classe que celui utilisé pour gérer cet événement pour les écouteurs ajoutés via le modèle d’événement conventionnel d’ajout via += à l’événement sur l’expéditeur. L’exemple de section suivant fournit un modèle d’implémentation approximatif.

S’applique à

Voir aussi