Comparteix a través de


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

Definición

Recibe los eventos del administrador de eventos centralizado.

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

Parámetros

managerType
Type

Tipo de la clase WeakEventManager que llama a este método.

sender
Object

Objeto que originó el evento.

e
EventArgs

Datos de evento

Devoluciones

Es true si el agente de escucha controló el evento. El control de WPF considera un error WeakEventManager para registrar un agente de escucha para un evento que el agente de escucha no controla. De todos modos, el método debe devolver false si recibe un evento que no reconoce o no controla.

Ejemplos

En el ejemplo siguiente se implementa para proporcionar compatibilidad con patrones WeakEvent para dos eventos hipotéticos ReceiveWeakEvent y CounterclockwiseSpin que cada uno tiene un dedicado WeakEventManager (no se ClockwiseSpin muestra). Esta implementación llama a códigos auxiliares del controlador de clases para cada evento admitido, convirtiendo los datos del evento (en este caso, los dos eventos comparten un tipo SpinEventArgsde datos de evento ). La implementación devuelve false si el evento recibido no es uno que se espera.

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

Notas a los implementadores

Este método está pensado para recibir todos los eventos posibles en los que el receptor se encuentra en una lista de agentes de escucha. Especialmente si se implementa para una clase que escucha más de un evento, debe comprobar el tipo del parámetro entrante managerType para saber a qué evento corresponde la llamada. Este es el motivo por el que cada evento que forma parte del patrón debe tener un objeto dedicado WeakEventManager. Además, el e parámetro se escribe como general EventArgs. Por lo tanto, para obtener las propiedades específicas de los datos del evento, la implementación tendrá que convertir al tipo de datos de evento específico.

Normalmente, después de comprobar la identidad del evento en función del WeakEventManager tipo, la implementación debe llamar a un controlador de clase privada. El controlador de clases podría ser, posiblemente, el mismo controlador de clase que se usa para controlar ese evento para los agentes de escucha que se agregan a través del patrón de evento convencional de agregar += a través del evento en el remitente. En la sección de ejemplo siguiente se proporciona una plantilla de implementación aproximada.

Se aplica a

Consulte también