禁用WPF按钮上的默认动画

时间:2013-10-27 01:16:38

标签: c# wpf

In WPF: how to disable the animation when the button after be pressed?

上面的这个问题解决了这个问题,但它改变了整个模板,是否有更优雅的解决方案,例如:

<Style.Triggers>
    <Trigger Property="IsFocused" Value="True">
        <Setter Property="StoryBoard" Value="Disable" />
    </Trigger>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="StoryBoard" Value="Disable" />
    </Trigger>
</Style.Triggers>

2 个答案:

答案 0 :(得分:3)

not the storyboardMouseOver and Pressed events制作动画,而border brush for button is updated则为control tempalte triggers。如果您想逃脱这些触发器unfortunately you have to override the template to remove those triggers from the default template

可以找到默认模板here。您可以在那里看到负责更新边框画笔的触发器。

只需从默认模板中删除该触发器即可开始使用。如果您希望将该样式应用于应用程序中的所有按钮,请将样式放在App资源中。

<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
   <Setter Property="Template">
       <Setter.Value>
           <ControlTemplate TargetType="Button">
              <Border x:Name="Border" 
                      BorderThickness="1"
                      Background="{TemplateBinding Background}"
                      BorderBrush="{TemplateBinding BorderBrush}">
                  <ContentPresenter Margin="2"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    RecognizesAccessKey="True"/>
               </Border>
            </ControlTemplate>
        </Setter.Value>
   </Setter>
</Style>

除此之外,如果您希望为按钮提供工具栏按钮的外观和感觉,您可以通过简单地应用工具栏按钮样式来实现这一点 -

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"/>        

答案 1 :(得分:2)

您也可以使用PreviewMouseLeftButtonDown的处理程序代替ButtonClick

函数将相同并命令 e.Handled = true; 确保动画无法启动

&#13;
&#13;
 private void button_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {

            //some your code
            e.Handled = true;
        }
&#13;
&#13;
&#13;