Остановить Storyboard

238
08 октября 2018, 02:20

Имеется юзерконтрол, который имеет поля имя, онлайн и т.д. Когда собеседник начинает печатать, приходит LongPoll ответ. Далее срабатывает метод, который ищет этот контрол и присваивает свойству IsTyping значение true, срабатывает Storyboard, который заменяет поле сообщение на "Is typing...". Как мне по истечении 5 секунд вернуть поле сообщение в исходное?

<Storyboard x:Key="StringAnimationStoryboard">
    <StringAnimationUsingKeyFrames AutoReverse="False"
                             Storyboard.TargetName="MessageTextBlock"
                                   Storyboard.TargetProperty="Text"
                                   Duration="5">
        <DiscreteStringKeyFrame Value="Is typing." KeyTime="0:0:0.1" />
        <DiscreteStringKeyFrame Value="Is typing.." KeyTime="0:0:0.3" />
        <DiscreteStringKeyFrame Value="Is typing..." KeyTime="0:0:0.5" />
        <DiscreteStringKeyFrame Value="Is typing...." KeyTime="0:0:0.7" />
    </StringAnimationUsingKeyFrames>
</Storyboard>
<DataTrigger Binding="{Binding IsTyping}" Value="true">
    <DataTrigger.EnterActions>
        <BeginStoryboard Name="BeginStoryboard" Storyboard="{StaticResource StringAnimationStoryboard}"/>
    </DataTrigger.EnterActions>
</DataTrigger>
Answer 1

Измените в StringAnimationUsingKeyFrames значение свойства Duration на 0:0:5 (у вас сейчас стоит просто 5 — это 5 дней) и задайте значение FillBehavior="Stop" (по умолчанию там HoldEnd), тогда по завершении анимации она автоматически удалится и вступит в силу значение из привязки.

Другой способ (даже при использовании первого этот может оказаться тоже нужным) — удалять анимацию при обратном срабатывании триггера:

<DataTrigger.ExitActions>
    <RemoveStoryboard BeginStoryboardName="BeginStoryboard"/>
</DataTrigger.ExitActions>
READ ALSO
Конвертровать string[] в char[,]

Конвертровать string[] в char[,]

Есть некоторый массив строк:

196
C# спагетти из списков: оперативная память и производительность

C# спагетти из списков: оперативная память и производительность

Допустим есть 3 разных класса, A (родительский) и два наследника B и C

197
Изменение иконки в TreeViewItem

Изменение иконки в TreeViewItem

Имеется обычный TreeViewПри нажатии правой кнопкой мыши по treeviewitem вылезает меню (добавляет/удаляет запись в/из коллекции)

215
Как подключить кортежи для C# в MVS17?

Как подключить кортежи для C# в MVS17?

Как подключить кортежи для C# в Visual Studio 17?

184