La maggior parte dei pulsanti AppBar si basa su uno stile incluso in StandardStyles denominato AppBarButtonStyle.
Per personalizzare il testo del pulsante si imposta la proprietà associata AutomationProperties.Name, per personalizzare l'icona nel pulsante si imposta la proprietà contenuti, ed è anche una buona idea per impostare il AutomationProperties.AutomationId proprietà allegata per motivi di accessibilità.
Ecco un esempio di un pulsante personalizzato utilizzando questo approccio:
<Style x:Key="FolderButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}">
<Setter Property="AutomationProperties.AutomationId" Value="FolderAppBarButton"/>
<Setter Property="AutomationProperties.Name" Value="Folder"/>
<Setter Property="Content" Value=""/>
</Style>
Come accennato in precedenza, per personalizzare l'icona si imposta la Content proprietà. La sfida è come imposti il contenuto in modo che mostri la tua arte vettoriale personalizzata.
Si scopre che è possibile posizionare qualsiasi percorso Xaml, anche il proprio, in una vista Viewbox per modificarne la scala. Questo è stato il mio primo approccio, ma non funziona. In effetti, sembra che ogni volta che usi la notazione estesa Xaml per impostare la proprietà Content per un pulsante che non funziona.
<Style x:Key="SquareButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}">
<Setter Property="AutomationProperties.AutomationId" Value="SquareAppBarButton"/>
<Setter Property="AutomationProperties.Name" Value="Square"/>
<Setter Property="Content">
<Setter.Value>
<!-- This square will never show -->
<Rectangle Fill="Blue" Width="20" Height="20" />
</Setter.Value>
</Setter>
Io in realtà penso che questo è un bug, ma per fortuna c'è una soluzione.
Tim Heuer ha scritto un eccellente articolo sul modo più semplice per utilizzare un Xaml percorso come l'opera d'arte per un pulsante. Questo articolo è qui:
http://timheuer.com/blog/archive/2012/09/03/using-vectors-as-appbar-button-icons.aspx
In breve, è necessario definire uno stile che imposta tutte le associazioni in modo corretto:
<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>
Poi si crea uno stile che eredita da quello stile e tu incolli nel tuo percorso. Qui è lo stile per la grafica che hai elencato sopra:
<Style x:Key="CrossButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource PathAppBarButtonStyle}">
<Setter Property="AutomationProperties.AutomationId" Value="CrossAppBarButton"/>
<Setter Property="AutomationProperties.Name" Value="Cross"/>
<Setter Property="Content" Value="M372.58272,134.72445C167.96301,134.72445 2.06820310000001,300.58818 2.06820310000001,505.20789 2.06820310000001,709.8276 167.96301,875.72241 372.58272,875.72241 577.20243,875.72241 743.06616,709.8276 743.06616,505.20789 743.06616,300.58818 577.20243,134.72445 372.58272,134.72445z M280.73888,251.77484L455.94149,251.77484 455.94149,413.70594 628.16035,413.70594 628.16035,588.97071 455.94149,588.97071 455.94149,773.71514 280.73888,773.71514 280.73888,588.97071 106.22005,588.97071 106.22005,413.70594 280.73888,413.70594 280.73888,251.77484z"/>
</Style>
E, infine, lo si utilizza nella vostra AppBar come questo:
<Button Style="{StaticResource CrossButtonStyle}" />
supporto Dev, supporto alla progettazione e la bontà più impressionante sulla strada: http://bit.ly/winappsupport
Qual è l'elemento xaml che contiene l'elemento immagine? Che cosa succede alle proporzioni se rimuovi larghezza, altezza e/o attributi del margine dall'elemento immagine? – Nathan
La gerarchia è . Non sei sicuro di cosa intendi per "aspect ratio"? Usando il codice precedente non riesco a visualizzare l'immagine. –
"Se aggiungo questo direttamente alle mie app xaml, renderà comunque la scala molto lontana." - Stavo cancellando quella frase per quanto riguarda le proporzioni. Non è stato chiaro per me quando ho letto la tua domanda la prima volta che non lo visualizzi affatto quando usi la sorgente di immagini - anche se è abbastanza chiaro nel titolo ... – Nathan