在自定义样式按钮上显示热键下划线

时间:2018-02-19 14:14:07

标签: wpf xaml

我在WPF中更改了Buttons的样式。所有这一切都按预期工作,但是有没有办法通过按ALT显示来显示您显示的经典热键下划线?如果我在Button文本中添加下划线,则会始终显示它。

<Style TargetType="Button">
    <Setter Property="FontFamily" Value="{StaticResource THFont}" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="Background" Value="#f00000" />
    <Setter Property="Height" Value="20" />
    <Setter Property="Margin" Value="10 0 10 0" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Border x:Name="border" CornerRadius="10" BorderBrush="#f00000" BorderThickness="1" Background="#f00000">
                        <Grid>
                            <TextBlock Name="TextBlock" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="12" Margin="10 0 10 0" Text="{TemplateBinding Button.Content}" />
                        </Grid>
                    </Border>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" TargetName="border" Value="#BD0000" />
                        <Setter Property="BorderBrush" TargetName="border" Value="#BD0000" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 个答案:

答案 0 :(得分:1)

您的模板应包含ContentPresenter

<Style TargetType="Button">
    <Setter Property="FontFamily" Value="{StaticResource THFont}" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="Background" Value="#f00000" />
    <Setter Property="Height" Value="20" />
    <Setter Property="Margin" Value="10 0 10 0" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Border x:Name="border" CornerRadius="10" BorderBrush="#f00000" BorderThickness="1" Background="#f00000">
                        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" TextElement.FontSize="12" Margin="10 0 10 0"
                                     Focusable="False" RecognizesAccessKey="True"/>
                    </Border>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" TargetName="border" Value="#BD0000" />
                        <Setter Property="BorderBrush" TargetName="border" Value="#BD0000" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>