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
- Analizzare il contenuto di una issue con GitHub Models e AI
- Integrare OpenAI tramite Aspire
- Visualizzare un template per browser mobile tramite un custom control ASP.NET
- Visualizzare l'errore esteso di ASP.NET in base all'indirizzo IP di connessione
- Interagire con Azure DevOps tramite MCP Server
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- Ottimizzare il codice #javascript con i Shorthand #patterns - terza parte https://aspit.co/ca7 di @morwalpiz
- Creare un agente A2Acon Azure Logic Apps
- Usare il RoleManager per gestire i ruoli con ASP.NET Identity