【问题标题】:Storyboard Triggers only once for second condition情节提要仅在第二个条件下触发一次
【发布时间】: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


【解决方案1】:

使用单个条件IsChecked,而不是检查文本框文本或按下按钮, 不要使用简单的Button,而是使用ToggleButton 并在其上应用您的 Button 样式。

你可以这样使用它:

您的TextBlock

<TextBlock x:Name="abctxt" Text="Disconnected" />

ToggleButton 而不是Button

<ToggleButton x:Name="sbbtn"> <!-- Also Apply Your Style For making your ToggleButton looks like your Button -->
<ToggleButton.Triggers>
    <EventTrigger RoutedEvent="ToggleButton.Checked">
        <BeginStoryboard Storyboard="{StaticResource ConnectedTextChange}" />
    </EventTrigger>
    <EventTrigger RoutedEvent="ToggleButton.Unchecked">
        <BeginStoryboard Storyboard="{StaticResource DisconnectedTextChange}" />
    </EventTrigger>
    </ToggleButton.Triggers>

你的Storyboard

<!-- Here i set TargetName also -->
<Storyboard x:Key="ConnectedTextChange" x:Name="ConnectedTextChange" Storyboard.TargetName="abctxt">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" AccelerationRatio="1">
    <DiscreteStringKeyFrame KeyTime="0:0:0.8" Value="Connected"/>
</StringAnimationUsingKeyFrames>

<Storyboard x:Key="DisconnectedTextChange" x:Name="DisconnectedTextChange" Storyboard.TargetName="abctxt">
    <StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" AccelerationRatio="1">
        <DiscreteStringKeyFrame KeyTime="0:0:0.8" Value="Disconnected"/>
    </StringAnimationUsingKeyFrames>
</Storyboard>

【讨论】:

  • 感谢它按预期工作,也感谢使用切换按钮的建议。
猜你喜欢
  • 2017-05-27
  • 2021-04-29
  • 2023-03-21
  • 2021-11-08
  • 2020-10-08
  • 1970-01-01
  • 2021-03-14
  • 2018-09-27
  • 2012-01-18
相关资源
最近更新 更多