在WPF按钮上禁用默认动画

4

在WPF中,如何在按钮被按下后禁用动画?

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

<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个回答

4
您也可以使用PreviewMouseLeftButtonDown处理程序而不是ButtonClick。功能将保持不变,命令 e.Handled=true; 确保动画不会开始。

 private void button_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {

            //some your code
            e.Handled = true;
        }


3

并不是故事板在播放MouseOver和Pressed事件,而是通过控件模板触发器更新按钮的边框画刷. 如果你想避免这些触发器,不幸的是,您需要重写模板以从默认模板中删除这些触发器.

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

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

<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}}"/>        

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接