点击wpf中的普通按钮后,会出现一些淡入淡出的动画效果,提醒您按钮被选中。
如何手动删除此效果,是否需要设置鼠标输入/输出触发器以使按钮被选中/释放?
<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>
答案 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;
}
}