Qual è la differenza tra eventi indirizzati e eventi collegati?

6

Sto solo esaminando i concetti di WPF che ho trovato in questi eventi indirizzati, proprietà di dipendenza ed eventi collegati.

Quali sono i concetti dietro di loro e perché vengono chiamati al posto dei metodi ordinari .NET?

    
posta judith 18.01.2012 - 14:11
fonte

2 risposte

16

Eventi indirizzati

Secondo MSDN ,

A routed event is a type of event that can invoke handlers on multiple listeners in an element tree, rather than just on the object that raised the event.

La definizione è seguita da un esempio di nodo WPF con tre pulsanti. Il singolo evento indirizzato è in ascolto di tre pulsanti. Se provi a scrivere lo stesso codice utilizzando eventi ordinari, dovrai utilizzare tre eventi separati, un evento per pulsante.

Questo significa che, invece di definire più eventi su ogni controllo in uno stesso figlio, devi definire un evento indirizzato a livello genitore, che verrà generato da ogni bambino interessato.

Inoltre, potresti voler leggere Eventi instradati su WPFTutorial.net che utilizza una terminologia più precisa della mia risposta, e che spiega anche perché gli eventi indirizzati di solito appaiono come coppia.

Proprietà delle dipendenze

Secondo MSDN ,

The purpose of dependency properties is to provide a way to compute the value of a property based on the value of other inputs.

Pensa come un modo per semplificare il tuo codice (e in particolare la possibilità di usare il codice), dal momento che puoi usare una proprietà di dipendenza come ordinaria.

Inoltre, potresti leggere un articolo più completo su Switch On The Code article , che spiega anche perché ha senso che un DependencyProperty sia statico, mostra come aggiungere le richiamate di modifica o utilizzare la convalida, ecc.

Eventi associati

Secondo MSDN ,

The concept of an attached event enables you to add a handler for a particular event to an arbitrary element rather than to an element that actually defines or inherits the event.

Questo è particolarmente utile quando l'oggetto che solleva l'evento è indipendente dall'albero WPF effettivo. Uno degli esempi forniti dalla stessa documentazione sono gli eventi del mouse, quando quegli eventi non sono correlati all'elemento WPF che, come nel caso di MouseDown , alza e ascolta l'evento.

Inoltre, potresti voler leggere Eventi allegati per esempio , che spiega che "la classe che definisce l'evento non è spesso né l'utente dell'evento (chi lo consuma aggiungendo un gestore su di esso) né la fonte dell'evento (qualunque sia il codice che lo solleva)." e fornisce molti più dettagli sugli eventi collegati e la loro differenza con gli eventi indirizzati.

    
risposta data 18.01.2012 - 14:35
fonte
-1

Puoi già farlo con gli eventargs regolari inserendo lo stesso nome del gestore di eventi in diverse proprietà di clic del pulsante e quindi convertendo il mittente in pulsante per accedere alle sue proprietà. Puoi anche chiamare un evento click del pulsante da qualche elemento arbitrario usando un delegato, quindi di nuovo non sono sicuro di come sia migliore, è solo diverso è tutto ciò che posso fare.

    
risposta data 04.02.2016 - 16:53
fonte

Leggi altre domande sui tag