【发布时间】:2019-04-25 08:22:27
【问题描述】:
我有一个单击按钮,TextBlock MultiDataTrigger 在其上运行,但每次单击按钮时它只运行两次。
说明:首先默认 TextBlock 文本已断开连接,然后有两个 MultiDataTrigger 满足条件运行,然后在另一个 MultiDataTrigger 上再次单击按钮但此后没有故事板动画工作。
文本块
<TextBlock x:Name="abctxt" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Center" Text="Disconnected">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=sbbtn, Path=IsPressed}" Value="True" />
<Condition Binding="{Binding ElementName=abctxt, Path=Text}" Value="Connected" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource DisconnectedTextChange}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=sbbtn, Path=IsPressed}" Value="True" />
<Condition Binding="{Binding ElementName=abctxt, Path=Text}" Value="Disconnected" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource ConnectedTextChange}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
按钮
<Button x:Name="sbbtn" />
故事板
<Storyboard x:Key="ConnectedTextChange" x:Name="ConnectedTextChange">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" AccelerationRatio="1">
<DiscreteStringKeyFrame KeyTime="0:0:0.8" Value="Connected"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="DisconnectedTextChange" x:Name="DisconnectedTextChange">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" AccelerationRatio="1">
<DiscreteStringKeyFrame KeyTime="0:0:0.8" Value="Disconnected"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
【问题讨论】:
-
似乎文本被 ConnectedTextChange Storyboard 保持为“已连接”,因此其他 Storyboard 无法将其更改回“已断开连接”。
-
@kennyzx 试过这个吗?有什么建议,我该怎么办?
-
你必须使用动画(故事板)吗?还是您只想更改文本以响应按钮单击?默认情况下,Storyboard 会在 Storyboard 完成时保存最终值。
-
@kennyzx 不!我必须使用情节提要,实际上我有另一个控件(使用情节提要在边距中滑动的矩形)也具有与文本块相同的条件,但文本块和矩形都只开始情节提要一次
-
@sachinshinde 尝试我的方法正确地做同样的事情。
标签: c# wpf xaml storyboard