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>
4

2 に答える 2

3

それnot the storyboardはアニメーション化してMouseOver 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.

デフォルトのテンプレートはここにあります。ボーダー ブラシの更新を担当するトリガーが表示されます。

そのトリガーをデフォルトのテンプレートから削除するだけで、準備完了です。アプリ内のすべてのボタンにスタイルを適用する場合は、そのスタイルをアプリ リソースに配置します。

<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}}"/>        
于 2013-10-27T09:20:58.270 に答える