Qual è la differenza esatta tra eventi Bubbling e eventi Tunnelling? Dove dovrei usare Bubbling Events e dove dovrei usare gli eventi di Tunneling? Grazie in anticipo!Differenza tra eventi Bubbling e Tunnelling
risposta
WPF ci fornisce una serie di diversi meccanismi per la gestione degli eventi: sono bubbling, tunneling e direct. Questi sono tutti noti come eventi instradati .
evento diretto
Probabilmente si sta già utilizzati per l'evento indirizzato diretta. Questo è dove l'elemento stesso gestisce l'evento che si è verificato. Un buon esempio di sarebbe la gestione di
onClick
-event di un pulsante del mouse in standard WinForms. È qui che l'evento viene generato nella voce della GUI e ottiene gestito da detto elemento della GUI.Bubbling Evento
Ora sappiamo tutti come alcune bolle in una forma o nell'altra. Bubbling succede a quando l'evento non è gestito dall'elemento (ad esempio un
textbox
) e l'evento "bolle" raggiunge i contenitori dell'interfaccia utente che lo contengono. Per esempio , diciamo che hai una finestra che contiene un pannello e all'interno di quel pannello hai una griglia e all'interno della griglia hai una casella di testo. Se l'evento non viene gestito dalla casella di testo, quindi si sposta, viene passato o "bolle" fino al livello di griglia (poiché la griglia contiene la casella di testo), se non viene gestito a quel livello quindi l'evento bolle ulteriormente su "albero" (noto come albero visivo) al pannello in cui è possibile o meno essere gestito. Questo processo continua fino a quando non viene gestito o l'evento "fugge" l'elemento più in alto.Gli esempi di un evento di bubbling potrebbero essere qualcosa di simile a un evento
MouseButtonDown
. O un eventoKeydown
.Tunneling
Tunneling è l'opposto di ribollimento. Quindi, invece di un evento che va a "su" l'albero visivo, l'evento viaggia lungo l'albero visivo verso l'elemento che è considerato la fonte. La definizione standard di WPF denominata di un evento di tunneling è che iniziano tutti con "anteprima" ad esempio
previewdownkey
epreviewmousebuttondown
. Puoi catturarli mentre si dirigono verso l'elemento "target" e gestirlo. Un esempio di potrebbe essere che tu abbia alcuni controlli all'interno di un controllo di griglia e per qualche motivo hai deciso che nessun controllo all'interno di a quella griglia sarà permesso di avere la lettera "t" raggiungerlo.
Source con il parere dell'autore che non supporto o non sono d'accordo con.
And another StackOverflow question which is pretty much the same.
And last but not least some explanation and another tutorial.
Per cominciare: la convenzione di denominazione in WPF per alcuni eventi di default è Preview<event>
per il tunneling e <event>
per bubbling. Così ad esempio per KeyDown avremmo PreviewKeyDown
e KeyDown
, tunneling e bubbling rispettivamente.
La differenza tra i due, come implica la convenzione di denominazione, è che un evento di tunneling inizierà dal nodo più alto nell'albero (probabilmente la finestra) e scenderà al minore. Un evento spumeggiante inizierà dal bambino e poi salirà di nuovo.
Questa guida dovrebbe spiegare chiaramente: http://www.codeproject.com/Articles/464926/To-bubble-or-tunnel-basic-WPF-events
- 1. Differenza tra eventi e metodi
- 2. evento di bubbling, e stop propagazione
- 3. Bubbling e acquisizione con addEventListener
- 4. Differenza tra .bind e altri eventi
- 5. Differenza tra gestori di eventi e callback
- 6. Bubbling up eventi da sottoscrivere a
- 7. Span all'interno Ancora con bubbling degli eventi
- 8. Differenza tra aggregatore di eventi, comandi e richiesta/risposta
- 9. Qual è la differenza tra gli eventi Control.Enter e Control.GotFocus?
- 10. Qual è la differenza tra gli eventi "mouseup" e "clic"?
- 11. Laravel differenza tra eventi, ascoltatori, lavori, code
- 12. Come si annulla il bubbling degli eventi in ASP.net?
- 13. evento Mastering bubbling
- 14. Reagire: bubbling degli eventi attraverso i componenti nidificate
- 15. Evento inverso bubbling in javascript
- 16. qual è la differenza tra gli eventi js e gli eventi DOM?
- 17. Qual è la differenza, se esiste, tra il gestore di eventi e il listener di eventi?
- 18. Comunicare tra viste progettare modelli con eventi
- 19. La differenza tra $ * e $ @
- 20. Differenza tra $ # e $ {# @}
- 21. Differenza tra. e #
- 22. MySQL: Differenza tra ",", "e"
- 23. Differenza tra "o" e "||"
- 24. Differenza tra unwrapObservable e()
- 25. Differenza tra oggetto e *?
- 26. Differenza tra "**/* /" e "** /"?
- 27. Differenza tra jquery e $
- 28. CMake: differenza tra $ {} e "$ {}"
- 29. Differenza tra ". +" E ". +?"
- 30. VBA: Differenza tra & e +
Davvero buona spiegazione, grazie +1. A proposito, il link per "Un bel progetto demo" è morto. – Sabuncu