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
Utilizzare le View Transition API di JavaScript
Effettuare la ricerca di testo nascosto in una pagina web con Javascript
Mappare una complex property di una entity su un campo JSON
Rendere affidabile lo scale out su Azure App Service
Creare una file based app con C#
Diagnosticare e monitorare Azure con Azure MCP Server
Permettere a un LLM di invocare funzioni con Microsoft.Extensions.AI
Creare una UI per i tool MCP con resource e Azure Functions
Canary release con .NET Aspire
Realizzare un accordion con gli elementi HTML details e summary
Utilizzare i command service nei test con .NET Aspire
Gestire trasferimenti cloud con Azure Storage Mover
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


