Większość przycisków AppBar bazuje na stylu zawartym w StandardStyles o nazwie AppBarButtonStyle.
Aby dostosować tekst przycisku można ustawić dołączony własność AutomationProperties.Name, aby dostosować ikonę przycisku ustawić właściwość zawartość, i to również dobry pomysł, aby ustawić AutomationProperties.AutomationId dołączona właściwość ze względów związanych z ułatwieniami dostępu.
Oto przykład jednego przycisku dostosować za pomocą tego podejścia:
<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>
Jak wspomniano powyżej, aby dostosować ikonę ustawić zawartość nieruchomości. Wyzwanie polega na tym, jak ustawić zawartość, aby wyświetlała niestandardową grafikę wektorową.
Okazuje się, że możesz zmienić dowolną ścieżkę Xaml, nawet twoją, w Viewbox, aby zmienić jej skalę. To było moje pierwsze podejście, ale nie działa. Wydaje się, że za każdym razem, gdy korzystasz z notacji rozwiniętej Xaml, możesz ustawić właściwość dla przycisku, który nie działa.
<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>
I rzeczywiście, że jest to błąd, ale na szczęście istnieje obejście.
Tim Heuer napisał doskonałą artykuł na najprostszym sposobem użycia XAML Path jako grafiki na przycisku. Że artykuł jest tutaj:
http://timheuer.com/blog/archive/2012/09/03/using-vectors-as-appbar-button-icons.aspx
Krótko mówiąc, trzeba zdefiniować styl, który ustawia się wszystkie powiązania poprawnie:
<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>
Następnie należy utworzyć styl, który dziedziczy ten styl i wklejasz na swoją ścieżkę. Oto styl kompozycji ty wymienione powyżej:
<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>
i wreszcie go używać w swojej AppBar tak:
<Button Style="{StaticResource CrossButtonStyle}" />
wsparcie Dev, wsparcie projektowe i bardziej niesamowita dobroć po drodze: http://bit.ly/winappsupport
Co to jest element xaml zawierający element obrazu? Co dzieje się ze współczynnikiem kształtu, jeśli usuwasz atrybuty width, height i/lub margin z elementu image? – Nathan
Hierarchia to . Nie wiesz, co masz na myśli przez "współczynnik proporcji"? Korzystając z powyższego kodu, nie mogę w ogóle wyświetlić obrazu. –
"Jeśli dodaję to bezpośrednio do moich aplikacji xaml, to wyłączy on skalę." - Odrywałem się od tego wyrażenia dotyczącego proporcji. Nie było dla mnie jasne, kiedy przeczytałem twoje pytanie za pierwszym razem, gdy nie korzystałeś z niego podczas korzystania ze źródła obrazu - choć jest to całkiem jasne w tytule ... – Nathan