У меня есть простая анимация раскадровки, которая выглядит следующим образом:
<Window.Resources>
<Storyboard x:Key="fader">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="0:0:4" Value="1"/>
<SplineDoubleKeyFrame KeyTime="0:0:6" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
Как вы можете видеть, она затухает в цели, ждет 3,5 секунды, затем затухает.Я использую его в окне уведомлений, которое появляется, когда происходит событие.
Это прекрасно работает, вызывая следующий код из кода, когда это событие происходит:
board = (Storyboard)FindResource("fader");
board.Begin(this);
Однако я 'Я пытаюсь обработать случай, когда происходит второе событие, когда окно уведомления уже отображается.В этом случае поведение, которое я ищу, состоит в том, чтобы изменить содержимое окна, чтобы отразить второе событие (легкое), и «перемотать» раскадровку на 0,5 с на протяжении всего времени его существования, т.е.сразу после его появления.
Другими словами, второе событие должно вызвать затухание через 3,5 секунды после того, как второе событие произошло, даже если окно уже было где-то между 0 и 6 секундами.
Я попытался сделать это, обнаружив непрозрачность окна, и, если оно> 0, затем вызвал следующее:
board.Seek(this,TimeSpan.FromSeconds(0.5),TimeSeekOrigin.BeginTime);
Однако, похоже, это ничего не делает,и даже если я запускаю события в нем несколько раз, содержимое окна изменяется, но уведомитель покорно исчезает, ждет 3,5 секунды, а затем снова исчезает.
Почему это не работает, и это лучший способделать то, что я пытаюсь достичь?