IWeakEventListener.ReceiveWeakEvent(Type, Object, EventArgs) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Recebe eventos do gerenciador 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
O tipo do WeakEventManager que chama esse método.
- sender
- Object
O objeto que originou o evento.
Dados do evento.
Retornos
true
se o ouvinte tratou o evento. É considerado um erro pelo WeakEventManager tratamento no WPF registrar um ouvinte para um evento que o ouvinte não manipula. De qualquer forma, o método deverá retornar false
se receber um evento que não reconhece ou trata.
Exemplos
O exemplo a seguir implementa ReceiveWeakEvent para fornecer suporte a padrões WeakEvent para dois eventos hipotéticos ClockwiseSpin
e CounterclockwiseSpin
que cada um tem um dedicado WeakEventManager (não mostrado). Essa implementação chama stubs de manipulador de classe para cada evento com suporte, lançando os dados do evento (nesse caso, os dois eventos compartilham um tipo SpinEventArgs
de dados de evento). A implementação retornará false
se o evento recebido não for um esperado.
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 aos Implementadores
Esse método destina-se a receber todos os eventos possíveis em que o receptor está em uma lista de ouvintes. Especialmente se estiver implementando para uma classe que esteja escutando mais de um evento, você deverá verificar o tipo do parâmetro de entrada managerType
para saber a qual evento a chamada corresponde. É por isso que cada evento que deve fazer parte do padrão deve ter um dedicado WeakEventManager. Além disso, o e
parâmetro é digitado como o geral EventArgs. Portanto, para obter quaisquer propriedades específicas dos dados do evento, sua implementação precisará ser convertida no tipo de dados de evento específico.
Normalmente, depois de verificar a identidade do evento com base no WeakEventManager tipo, sua implementação deve chamar um manipulador de classe privado. Seu manipulador de classe poderia concebivelmente ser o mesmo manipulador de classe usado para manipular esse evento para ouvintes que são adicionados por meio do padrão de evento convencional de adição via +=
evento no remetente. A seção de exemplo a seguir fornece um modelo de implementação aproximado.