だから私はマウスオーバー/アウト/ダウン/アップ時に画像を変更するボタンを作ろうとしていました...。
そして、次のことを思いついた:
<Image>
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Source" Value="/MyWPF;component/Resources/MediaPlayer/Play-Normal-icon.png"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source" Value="/MyWPF;component/Resources/MediaPlayer/Play-Pressed-icon.png"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Source" Value="/MyWPF;component/Resources/MediaPlayer/Play-Normal-icon.png"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Source" Value="/MyWPF;component/Resources/MediaPlayer/Play-Disabled-icon.png"/>
</Trigger>
<EventTrigger RoutedEvent="MouseDown">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="Source" Duration="00:00:00.5">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<BitmapImage UriSource="/MyWPF;component/Resources/MediaPlayer/Play-Hot-icon.png"/>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="MouseUp">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="Source" Duration="00:00:00.5">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<BitmapImage UriSource="/MyWPF;component/Resources/MediaPlayer/Play-Normal-icon.png"/>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
マウスオーバー/アウトは完全に機能します。
しかし、マウスクリック(下)を実行すると、EventTriggersが起動し、画像が変更されたことがわかります。
マウスクリックを放す(上)と、EventTriggersが再び起動し、画像が想定どおりに戻ったことがわかります。
次に、画像の上/外にマウスを置きます。もうイメージは変わりません…。
しかし、私がマウスを下/上にすると、まだ機能しています...
だから私はどういうわけかEventTriggerがIsMouseOverトリガーをオーバーライドしたのだろうか?
EventTriggerは他のトリガーをオーバーライドしますか?
PS:私の前の質問を読んだ人たちのために、ボタンがデータバインディングから無効になったために問題が発生したことを知りませんでした。