Раскадровка запускается только один раз для второго условия - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть кнопка, по которой Click, TextBlock MultiDataTrigger запускается, но при каждом нажатии кнопки он запускается только дважды.

Объяснение: Первый текст TextBlock по умолчанию отключен, затем есть два MultiDataTriggersиз которых выполняется условие, а затем после другого MultiDataTrigger при повторном нажатии кнопки, но после этого анимация раскадровки не работает.

Textblock

<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

<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>

1 Ответ

0 голосов
/ 27 ноября 2018

Вместо проверки текста в текстовом поле или нажатия кнопки перейдите с одним условием IsChecked, Вместо простого Button используйте ToggleButton и примените к нему свой стиль кнопки.

Вы можете использовать его кактаким образом:

Ваш 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...