ビューモデルプロパティの値(UIの他の場所でボタンをクリックした結果として変化する)に応じて、ウィンドウの左側または右側に表示できるコントロールがあります。このポジショニングを実現するためにDataTriggersを使用しています。
<DataTrigger Binding="{Binding ShowOnLeft}" Value="True">
<Setter Property="HorizontalAlignment" Value="Left"/>
</DataTrigger>
<DataTrigger Binding="{Binding ShowOnLeft}" Value="False">
<Setter Property="HorizontalAlignment" Value="Right"/>
</DataTrigger>
位置が変わったときにコントロールをフェードインさせたいので、次のトリガーを追加しました:-
<Trigger Property="HorizontalAlignment" Value="Left">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="0.8" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
<Trigger Property="HorizontalAlignment" Value="Right">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="0.8" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
しかし、それはいくつかの奇妙な結果を生み出します。フェードは、HorizontalAlignmentが初めて「Left」に変更されたときに機能しますが、その後の試行では機能しません。ただし、HorizontalAlignmentが「Right」に変わるたびにフェードは正常に機能します。トリガーの順序が部分的にダウンしているようです。2つのトリガーを入れ替えると、逆のことが起こります(フェードは、HorizontalAlignmentを初めて「Right」に設定したときにのみ機能しますが、「Left」では毎回機能します)。
私は何が間違っているのですか?