2

我有一个控件,它可以显示在窗口的左侧或右侧,具体取决于 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 更改为“Right”时,淡入淡出都会很高兴地工作。部分似乎取决于触发顺序 - 如果我交换两个触发器,则会发生相反的情况(淡入淡出仅在我第一次将 Horizo​​ntalAlignment 设置为“Right”时有效,但每次都适用于“Left”)。

我究竟做错了什么?

4

1 回答 1

1

也许是一个疯狂的猜测,但我前段时间也有过类似的(不想要的)行为。最后,我成功使用FillBehaviorDoubleAnimationset to的属性Stop(默认为HoldEnd)。

阅读本文以了解有关此属性/枚举的更多信息。

于 2012-09-10T14:58:54.943 回答