Nello script precedente abbiamo visto come utilizzare gli Style AppBarButtonStyle e i suoi derivati per visualizzare la maggior parte delle icone di una Windows Store App.
Qualora volessimo utilizzare un'icona personalizzata, non presente nel set degli Style, possiamo creare un nostro Style estendendo appunto AppBarButtonStyle.
Se analizziamo il VisualStateManager di AppBarButtonStyle possiamo vedere che nelle fasi di interazione, ad esempio PointerOver e Pressed, viene cambiato il valore della proprietà Foreground del ContentPresenter, il quale contiene l'oggetto che andiamo ad impostare nella proprietà Content del Button.
Per poter avere un'icona possiamo usare l'oggetto Path ma di quest'ultimo possiamo impostarne il colore con la proprietà Fill, anzichè Foreground. Per gestire questo scenario e per cambiare correttamente il colore durante le fasi di interazione possiamo creare uno Style come il seguente, nel quale sfruttiamo RelativeSource Mode=TemplatedParent nell'espressione di binding per trasferire le proprietà Foreground e Content nelle rispettive proprietà Fill e Data del Path.
<Style x:Key="PathAppBarButtonStyle" BasedOn="{StaticResource AppBarButtonStyle}" TargetType="ButtonBase"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <Path Width="20" Height="20" Stretch="Uniform" Fill="{Binding Path=Foreground, RelativeSource={RelativeSource Mode=TemplatedParent}}" Data="{Binding Path=Content, RelativeSource={RelativeSource Mode=TemplatedParent}}" /> </DataTemplate> </Setter.Value> </Setter> </Style>
In questo modo il suo utilizzo è estremamente semplice:
<Button Style="{StaticResource PathAppBarButtonStyle}" AutomationProperties.Name="Salva e.." Content="M14.0652215480804,14.7758959829807C14.3212740421295 ....." />
Ed ecco un esempio:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Utilizzare Azure AI Studio per testare i modelli AI
Creare alias per tipi generici e tuple in C#
Inizializzare i container in Azure Container Apps
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Criptare la comunicazione con mTLS in Azure Container Apps
Utilizzare gli snapshot con Azure File shares
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Installare le Web App site extension tramite una pipeline di Azure DevOps
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
I più letti di oggi
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Estrarre dati randomici da una lista di oggetti in C#
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione