【发布时间】:2023-03-21 22:32:01
【问题描述】:
我使用数据触发器来控制一些情节提要,但它只能触发一次。
<Style x:Key="PropertyTriggerExampleButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Width" Value="200" />
<Style.Triggers>
<DataTrigger Binding="{Binding para}" Value="0">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width"
To="500" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding para}" Value="1">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width"
To="200" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
<Button Style="{StaticResource PropertyTriggerExampleButtonStyle}">
button width will be changed
</Button>
para 是一个变量(已经实现了 INotifyPropertyChanged 接口),它将由另一个按钮控制。其值为 0 或 1。
但是当我单击按钮更改参数值时,情节提要仅针对每个值(0 和 1)触发一次。以后永远不会触发。
如果我将第二个故事板放入第一个数据触发器的 ExitActions 标记中。它会运作良好。但是我有超过 2 个故事板需要控制......
以下代码效果很好,但我需要根据不同的值控制许多故事板(超过 2 个)....
<Style.Triggers>
<DataTrigger Binding="{Binding para}" Value="0">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width" To="500" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width" To="200" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
【问题讨论】: