Io apprezzo se qualche corpo può spiegare con un semplice esempio.eventi Quali sono indirizzati e in che modo è diverso da eventi normali
risposta
Immaginate una finestra che contiene una fitta gerarchia dei controlli figlio. Ora diciamo che vuoi fare qualcosa, c'è un clic destro in qualsiasi punto della tua finestra.
- Con eventi normali, dovresti gestire un evento Click per tutti i controlli, perché non sei sicuro di dove l'utente possa fare clic.
- Con WPF routed events, gli eventi "bolla" o "tunnel" (es. Viaggiano sull'albero dell'interfaccia utente o verso il basso) se non trovano un gestore di eventi che "lo gestisce" al livello corrente. Quindi potresti scrivere un gestore per l'evento della finestra, ad esempio TopLevel. (WPF ha una convenzione di coppie di eventi, PreviewXXX e XXX - l'evento PreviewXXX primo e tunnel scorrimento dalla radice per controllare che ha ricevuto lo stimolo e l'evento controparte XXX bolle poi dal controllo bambino indietro fino Root). Quindi, se si fa clic destro su un pulsante, WPF viaggia nella gerarchia dell'interfaccia utente, invocando tutti i gestori che trova (a meno che qualcuno segna l'evento è "gestito" nelle args evento.)
eventi indirizzati sono eventi con piu ' abilità viaggia, come indicato nel risposta un di Gishu. eventi indirizzati sono rappresentati da un'istanza di una classe RoutedEvent + evento ordinario NET, che lo avvolge:
public class MyClassWithARoutedEvent : UIElement
{
public static readonly RoutedEvent DoSomethingEvent;
public event RoutedEventHandler DoSomething
{
add { base.AddHandler (MyClassWithARoutedEvent.DoSomethingEvent, value);
remove { base.AddHandler (MyClassWithARoutedEvent.DoSomethingEvent, value);
}
}
viene in genere utilizzato eventi propagandato in queste situazioni:
- implementare il proprio controllo, che senza soluzione di continuità si integra con l'infrastruttura WPF
- Eventi di elaborazione, attivati da diversi controlli su una radice comune
- Ordinamento delle comunicazioni tra gli elementi in un albero degli elementi Nella maggior parte dei casi si verificano Probabilmente userò l'infrastruttura di eventi instradati senza nemmeno accorgercene.
Inoltre, vale la pena menzionare che è possibile utilizzare RoutedEvent nel proprio controllo anche se non lo definisce né eredita da un elemento. Questo perché si può davvero pensare a un'istanza RoutedEvent come un forte nome digitato di un evento. Quindi, se si dispone di un accesso a questo 'nome' (questo è il motivo per cui un esempio di un evento indirizzato è di solito reso pubblico), è possibile doverla: eventi
public class MyClassWithARoutedEvent : UIElement
{
public static readonly RoutedEvent ClickEvent;
static MyClassWithARoutedEvent ()
{
ClickEvent = ButtonBase.ClickEvent.AddOwner(typeof (MyClassWithARoutedEvent));
}
// A wrapper should be placed here as described above
}
- 1. quali eventi sono associati?
- 2. Quali sono gli eventi supportati da Ember.js?
- 3. Che cos'è un ciclo di eventi e in che modo è diverso dall'utilizzo di altri modelli?
- 4. Quali sono i metodi dinamici e in che modo DynamicMethod è diverso da MethodBuilder?
- 5. Quali sono gli eventi che posso utilizzare in Excel
- 6. In che modo JavaScript associa eventi WinRT?
- 7. Quali eventi esterni attivano TCustomForm.RecreateWnd?
- 8. In che modo Delphi XE4 e Xamarin Monotouch differiscono nel modo in cui sono indirizzati a iOS?
- 9. In quali casi è necessario staccare gli eventi?
- 10. Come posso sapere quali eventi sono collegati agli elementi HTML?
- 11. Quali sono i vantaggi offerti da Sass sui normali CSS?
- 12. In che modo RFC 5545 è diverso da RFC 2445
- 13. Come scoprire quali eventi JavaScript sono stati attivati?
- 14. Eventi e delegati. Che motivo di design?
- 15. Quali sono gli eventi Ember.js per TextField Classe
- 16. In che modo engine.io è diverso da socket.io?
- 17. Asincronia e eventi .NET?
- 18. Cancellati da eventi in ObservableCollection
- 19. Perché non ci sono funzioni per la creazione di eventi da non-eventi in banana reattiva?
- 20. Che cos'è la concorrenza guidata da eventi?
- 21. Come posso sapere quali eventi si attivano da GXT?
- 22. Eventi Java e listener di eventi
- 23. In che modo ArrayListMultimap è diverso da LinkedListMultimap?
- 24. Che cosa sono gli eventi di anteprima WPF?
- 25. Quali librerie JavaScript hanno deleghe di eventi?
- 26. In che modo Object.prototype.toString.apply (valore) è diverso da value.toString()?
- 27. In che modo Android gestisce gli eventi della GUI?
- 28. eventi e osservabili in FSharp
- 29. Gestione della dipendenza da eventi multipli nell'architettura basata sugli eventi
- 30. Aumentare gli eventi in modo asincrono
Preview sono tunneling, non spumeggiante. –
@John - Oops! il mio wpf è diventato un po 'arrugginito. Grazie per la correzione ... aggiornata. – Gishu