如何在WPF中单击(按下)显示按钮

Use*_*123 10 c# wpf

鼠标上按钮应显示背景边框

我创造了一个简单的风格

<UserControl.Resources>
        <Style TargetType="Button" x:Key="TransparentButton">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border Background="Transparent">
                            <ContentPresenter/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

并在按钮中

<Button  Height="20" Width="20"  Padding="0,0,0,0" DockPanel.Dock="Top" Grid.Row="0" Grid.Column="1" Click="button_click"  Style="{StaticResource TransparentButton}"
                    BorderBrush="Transparent" BorderThickness="0" Background="Transparent">
            <Button.Content>
                <Image Source="../Resources/Help_icon.png" Stretch="UniformToFill" />
            </Button.Content>
            </Button>
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,当按下按钮时,它不会在UI中显示,用户应该感觉到按下按钮.

感谢致敬

Tre*_*ott 13

我不确定你想要什么,但如果你想在按下按钮时边框改变颜色,你会修改你的模板,如下所示:

<Style TargetType="Button" x:Key="TransparentButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Black">
                    <ContentPresenter/>
                </Border>

                <ControlTemplate.Triggers>
                    <Trigger Property="Button.IsPressed" Value="True">
                        <Setter TargetName="border" Property="BorderBrush" Value="Transparent" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)


Kev*_*lia 5

当您重新创建按钮的 ControlTemplate 时,您将失去 Windows 按钮感觉的所有默认功能。您需要使用触发器重新创建它们,或者不使用您自己的控件模板。

<ControlTemplate.Triggers>
   <Trigger Property="IsPressed" Value="True">
       <Setter ....behavior you want
   </Trigger>
</ControlTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)

这是按钮具有的 MSDN 默认控件模板的链接,您可以将其用作参考,以重新创建通过定义自己的行为而丢失的一些行为。

http://msdn.microsoft.com/en-us/library/ms753328%28v=vs.85%29.aspx