Una delle maggiori novità portate da Windows 10 Anniversary Update è sicuramente il supporto a tutta la parte di accessibilità delle informazioni.
Parlando più nello specifico delle "Access Keys", non solo ci permettono di raggiungere più facilmente, ad esempio, un pulsante che magari sarebbe difficilmente raggiungibile spostandosi con il solo tasto "tab" della tastiera, ma sono anche integrate con il sistema di accessibilità del sistema operativo, in modo da essere utilizzate anche da persone non vedenti.
Per supportare le "Access Key" all'interno di un'app WinRT è sufficiente andare ad impostare un paio di proprietà:
<Button Content="Impostazioni" AccessKey="I" AccessKeyDisplayDismissed="Button_AccessKeyDisplayDismissed" AccessKeyDisplayRequested="Button_AccessKeyDisplayRequested" AccessKeyInvoked="Button_AccessKeyInvoked"/>
Essendo il pulsante di "Impostazioni", allora abbiamo impostato una shortcut per la lettera "I" e quindi ci siamo registrati agli eventi per mostrare, nascondere e gestire le "Access Key".
Nell'evento AccessKeyDisplayRequested è sufficiente recuperare un tooltip e mostrarlo sopra al pulsante, così come all'interno dell'evento di chiusura non dovremmo fare altro che recuperare lo stesso tooltip e chiuderlo, mentre all'interno dell'evento AccessKeyInvoked ci basterà recuperare il contenuto del suggerimento e gestirlo secondo le nostre logiche:
private void Button_AccessKeyDisplayRequested(UIElement sender, AccessKeyDisplayRequestedEventArgs args) { var tooltip = ToolTipService.GetToolTip(sender) as ToolTip; if (tooltip == null) { tooltip = new ToolTip(); tooltip.Padding = new Thickness(4, 4, 4, 4); tooltip.VerticalOffset = -20; tooltip.Placement = PlacementMode.Bottom; ToolTipService.SetToolTip(sender, tooltip); } if (string.IsNullOrEmpty(args.PressedKeys)) tooltip.Content = sender.AccessKey; else tooltip.Content = sender.AccessKey.Remove(0, args.PressedKeys.Length); tooltip.IsOpen = true; } private void Button_AccessKeyDisplayDismissed(UIElement sender, AccessKeyDisplayDismissedEventArgs args) { var tooltip = ToolTipService.GetToolTip(sender) as ToolTip; tooltip.IsOpen = false; } private void Button_AccessKeyInvoked(UIElement sender, AccessKeyInvokedEventArgs args) { var tooltip = ToolTipService.GetToolTip(sender) as ToolTip; Debug.WriteLine("Ho cliccato il tasto... " + tooltip.Content); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Usare un KeyedService di default in ASP.NET Core 8
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Utilizzare i primary constructor di C# per inizializzare le proprietà
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
C# 12: Cosa c'è di nuovo e interessante