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