如何在WPF中单击后释放按钮?

时间:2014-08-11 05:46:29

标签: c# wpf button

点击wpf中的普通按钮后,会出现一些淡入淡出的动画效果,提醒您按钮被选中。

Image of button

如何手动删除此效果,是否需要设置鼠标输入/输出触发器以使按钮被选中/释放?

<Window x:Class="smalltest_button.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button Margin="50">click</Button>
</Grid>

2 个答案:

答案 0 :(得分:3)

您提到的效果是ControlTemplate类的默认Button的一部分。删除它的一种方法是提供自己的自定义ControlTemplate。这将使您能够以任何方式看起来。这是一个简单的例子:

<Button Margin="50">click
    <Button.Template>
        <ControlTemplate TargetType="{x:Type Button}">
            <Border CornerRadius="4" BorderBrush="Black" BorderThickness="1">
                <Border.Style>
                    <Style TargetType="{x:Type Border}">
                        <Setter Property="Background" Value="LightGreen" />
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="LightBlue" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Border.Style>
                <TextBlock Text="{TemplateBinding Content}" 
                    HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
        </ControlTemplate>
    </Button.Template>
</Button>

请参阅MSDN上的ControlTemplate Class页面以获取进一步的帮助。

答案 1 :(得分:2)

通过删除RenderDefaulted状态来尝试此操作。

<Button Margin="50" Click="Button_Click">click</Button>

private void Button_Click(object sender, RoutedEventArgs e)
{
    var button = sender as Button;
    dynamic chrome = VisualTreeHelper.GetChild(button, 0);
    if (chrome != null && chrome.GetType().Name == "ButtonChrome")
    {
        chrome.RenderDefaulted = false;
    }
}