In comune con gli altri framework visuali dell'ambiente .NET, in Silverlight, gli eventi di tipo Routed si propagano lungo tutta la catena padre/figlio dei controlli, secondo il fenomeno definito "bubbling" degli eventi.
Ad esempio, durante la scrittura all'interno di una TextBox, gli eventi KeyDown e KeyUp possono essere gestiti dal controllo stesso ma anche da ogni controllo "padre" che contiene la TextBox, compreso lo UserControl principale.
La sottoscrizione agli eventi può essere fatta da markup, oppure con la nota sintassi:
LayoutRoot.KeyDown += new KeyEventHandler(LayoutRoot_KeyDown); TextBox1.KeyDown += new KeyEventHandler(TextBox1_KeyDown);
Con questa modalità, il bubbling dell'evento può essere interrotto valorizzando a true la proprietà Handled del RoutedEventArgs parametro del gestore:
private void TextBox1_KeyDown(object sender, KeyEventArgs e) { e.Handled = true; }
In questo caso l'event handler "LayoutRoot_KeyDown" del nostro esempio non viene richiamato.
Per poter sottoscrivere un evento indipendentemente che uno dei controlli figlio ne abbiamo dichiarato la gestione, è possibile registrarsi con il metodo AddHandler, specificando l'evento, il delegato:
LayoutRoot.AddHandler(UIElement.KeyDownEvent, new KeyEventHandler(LayoutRoot_KeyDown), true);
Con l'ultimo parametro settato a true impostiamo proprio di mettersi in ascolto ad eventi
formalmente gestiti da altri metodi.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Nuovi corsi ASP e ASP.NET dal 22 novembre a Lugo (RA)
- Microsoft Security Bulletin MS05-029
- Longhorn si chiamerà Windows Vista?
- Semplificare la gestione degli array in querystring in ASP.NET Core
- .NET Aspire per applicazioni distribuite
- Aggiungere un valore neutro ad una DropDownList con il DataSet
- Paginazione e chiavi multiple con il controllo GridView
- Utilizzare CORS con Azure Cosmos DB
- Scoprire le applicazioni senza la pagina di errore personalizzata con LINQ e Microsoft.Web.Administration
- Utilizzare App Streaming Install nella Universal Windows Platform