TopAppBar按钮AutomationProperties在Windows应用商店应用程序中的样式

时间:2012-11-30 16:04:51

标签: c# xaml windows-8 visual-studio-2012 windows-store-apps

是否可以使用不同的颜色设置AutomationProperties.Name值的样式? 我从我的应用程序中的黑暗主题中获取基本文本颜色。我有自定义背景颜色,这就是为什么我需要针对此属性的特定ForegroundColorTextColorValue="OtherUserAppBarButton"

<Style x:Key="LogoutAppBarButtonStyle" TargetType="ButtonBase" 
              BasedOn="{StaticResource AppBarButtonStyle}">
    <Setter Property="AutomationProperties.AutomationId" Value="OtherUserAppBarButton"/>
    <Setter Property="AutomationProperties.Name" Value="Other User"/>
    <Setter Property="Content" Value="&#xE1A6;"/>
    <Setter Property="Foreground" Value="#ffffffff" />
</Style>

有人有想法吗?

1 个答案:

答案 0 :(得分:3)

要实现这一点,您需要修改基于按钮样式的AppBarButtonStyle。您可以在项目内的Common\StandardStyles.xaml中找到它。您可以直接修改此文件中的样式,也可以在App.xaml内创建它的副本,如果您还需要未修改的样式。

您需要在样式ControlTemplate中更改以下块:

<TextBlock
    x:Name="TextLabel"
    Text="{TemplateBinding AutomationProperties.Name}"
    Foreground="{StaticResource AppBarItemForegroundThemeBrush}"
    Margin="0,0,2,0"
    FontSize="12"
    TextAlignment="Center"
    Width="88"
    MaxHeight="32"
    TextTrimming="WordEllipsis"
    Style="{StaticResource BasicTextStyle}"/>

正如您所看到的,Foreground属性已固定为AppBarItemForegroundThemeBrush。您可以将其更改为{TemplateBinding Foreground},使其与您在LogoutAppBarButtonStyle中设置的颜色相匹配,或者您可以直接在模板中为其指定另一种自定义颜色。

另外,请不要忘记其他视觉状态的样式(PointerOverPressedDisabledChecked)。它们也设置为主题颜色。您可以在模板的VisualStateManager内更改它们