我有一个控件可以出现在窗口的左侧或右侧,具体取决于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>
然而它会产生一些奇怪的结果。淡入淡出第一次将HorizontalAlignment更改为“Left”,但不会在后续尝试中进行。但是,每次HorizontalAlignment更改为“Right”时,淡入淡出都会很愉快。它部分似乎是触发顺序 - 如果我交换两个触发器然后反向发生(淡入淡出仅在第一次将HorizontalAlignment设置为“Right”时起作用,但每次都用于“Left”)。
我做错了什么?