如何在Horizo​​ntalAlignment更改时淡入

时间:2012-09-10 14:47:06

标签: wpf

我有一个控件可以出现在窗口的左侧或右侧,具体取决于viewmodel属性的值(由于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”时,淡入淡出都会很愉快。它部分似乎是触发顺序 - 如果我交换两个触发器然后反向发生(淡入淡出仅在第一次将Horizo​​ntalAlignment设置为“Right”时起作用,但每次都用于“Left”)。

我做错了什么?

0 个答案:

没有答案