Имеется юзерконтрол, который имеет поля имя, онлайн и т.д. Когда собеседник начинает печатать, приходит 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>
Измените в StringAnimationUsingKeyFrames
значение свойства Duration
на 0:0:5
(у вас сейчас стоит просто 5
— это 5 дней) и задайте значение FillBehavior="Stop"
(по умолчанию там HoldEnd
), тогда по завершении анимации она автоматически удалится и вступит в силу значение из привязки.
Другой способ (даже при использовании первого этот может оказаться тоже нужным) — удалять анимацию при обратном срабатывании триггера:
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="BeginStoryboard"/>
</DataTrigger.ExitActions>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Допустим есть 3 разных класса, A (родительский) и два наследника B и C
Имеется обычный TreeViewПри нажатии правой кнопкой мыши по treeviewitem вылезает меню (добавляет/удаляет запись в/из коллекции)