L'applicazione Groove Musica, installata all'interno di Windows 10 come provider di default per ascoltare tutti i nostri brani preferiti, fa uso di una funzionalità particolare, ovvero di una CommandBar personalizzata, per fare spazio ad elementi quali il progresso di ascolto, i pulsanti di play/pausa e ascolto precedente/successivo e così via.
Originalmente la CommandBar, e prima di essa nella deprecata AppBar, non era previsto aggiungere controlli al di fuori di PrimaryCommands, SecondaryCommands, AppBarButton, AppBarSeparator e pochi altri. Al contrario, questa cosa si è sempre potuta fare con delle viste custom, facendo uso del contenitore Grid, ma a partire dall'SDK in versione 17773 è possibile fare uso dell'oggetto AppBarElementContainer per includere tutti gli elementi XAML che preferiamo all'interno dela barra, come mostrato nell'esempio seguente, che mima, appunto, l'applicazione Musica:
<Grid> <CommandBar VerticalAlignment="Bottom"> <CommandBar.PrimaryCommands> <AppBarElementContainer> <StackPanel Orientation="Horizontal"> <Button x:Name="Previous"> <SymbolIcon Symbol="Previous"/> </Button> <Button x:Name="PlayPause"> <SymbolIcon Symbol="Play"/> </Button> <Button x:Name="Next"> <SymbolIcon Symbol="Next"/> </Button> </StackPanel> </AppBarElementContainer> <AppBarElementContainer> <StackPanel> <TextBlock Text="Playing 'My song'..." /> <ProgressBar Width="200" Value="{x:Bind Progress}" /> </StackPanel> </AppBarElementContainer> <AppBarButton Icon="Volume" Label="Volume" LabelPosition="Collapsed" /> </CommandBar.PrimaryCommands> <CommandBar.SecondaryCommands> <AppBarButton Icon="FullScreen" Label="Full screen" /> <AppBarButton Icon="LikeDislike" Label="Like" /> </CommandBar.SecondaryCommands> </CommandBar> </Grid>
Un esempio del risultato finale è rappresentato dall'immagine seguente:
Il vantaggio di una soluzione di questo tipo, rispetto alla vista custom, consiste nel fatto che la barra può essere ancorata in basso o in alto, secondo le preferenze, ma non ci sarà bisogno di doversi creare tramite il VisualStateManager una vista differente per ogni risoluzione dello schermo in modo tale che al resize si veda sempre correttamente: il controllo CommandBar sposterà infatti in autonomia tutti i controlli che non fittano a schermo all'interno dei SecondaryCommands.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Miglioramenti agli screen reader e al contrasto in Angular
Collegare applicazioni server e client con .NET Aspire
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Eseguire script pre e post esecuzione di un workflow di GitHub
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Hosting di componenti WebAssembly in un'applicazione Blazor static
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Evitare il flickering dei componenti nel prerender di Blazor 8
Triggerare una pipeline su un altro repository di Azure DevOps
Eseguire una query su SQL Azure tramite un workflow di GitHub
Creare una libreria CSS universale: Clip-path
I più letti di oggi
- Build 2015: segui con noi tutte le novità per gli sviluppatori in diretta da San Francisco
- Speciale Windows Live Services: come integrarli nelle proprie applicazioni
- Rilasciata la RTM di SQL Server 2012, la versione Express subito in download
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- .NET Managed provider per MySQL
- WS-I approva Basic Profile 1.0
- Due regali dal Tech-Ed USA 2004: WSE 2.0 e VS 2005 Team System
- VS 2005 e SQL Server 2005 Express da scaricare
- Microsoft aggiorna WinFS beta 1 per VS 2005
- Utilizzare CLEditor per consentire l'input di HTML in ASP.NET MVC