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
Rendere le variabili read-only in una pipeline di Azure DevOps
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Definire il colore di una scrollbar HTML tramite CSS
Centralizzare gli endpoint AI Foundry con Azure API Management
Creare un agente A2Acon Azure Logic Apps
Integrare modelli AI in un workflow di GitHub
Configuratione e utilizzo .NET Aspire CLI
Configurare OpenAI in .NET Aspire
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
DevSecOps per .NET: dalla teoria alla pratica
Gestire gli errori nelle Promise JavaScript con try()
Definire il metodo di rilascio in .NET Aspire
I più letti di oggi
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Sfruttare una CDN con i bundle di ASP.NET


