2

ビューモデルプロパティの値(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>

しかし、それはいくつかの奇妙な結果を生み出します。フェードは、Horizo​​ntalAlignmentが初めて「Left」に変更されたときに機能しますが、その後の試行では機能しません。ただし、Horizo​​ntalAlignmentが「Right」に変わるたびにフェードは正常に機能します。トリガーの順序が部分的にダウンしているようです。2つのトリガーを入れ替えると、逆のことが起こります(フェードは、Horizo​​ntalAlignmentを初めて「Right」に設定したときにのみ機能しますが、「Left」では毎回機能します)。

私は何が間違っているのですか?

4

1 に答える 1

1

おそらく野蛮な推測ですが、私はしばらく前に同様の(望ましくない)行動をしました。最後に、に設定されたプロパティFillBehaviorで成功しました(デフォルトは)。DoubleAnimationStopHoldEnd

このプロパティ/列挙の詳細については、これをお読みください。

于 2012-09-10T14:58:54.943 に答える