我的视图中有一个简单的Border
元素,它带有一个TextBlock
绑定到表示我的应用程序中进程状态的字符串的子元素。
我正在尝试为该边框设置动画,以便在TextBlock
修改绑定到的字符串时滑入以从屏幕外查看。
这是我到目前为止所拥有的:
<Border>
<Border.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation Storyboard.TargetProperty="Margin" From="0,-100,0,0" To="0,0,0,0" DecelerationRatio=".9" Duration="0:0:1" />
<ThicknessAnimation Storyboard.TargetProperty="Margin" From="0,0,0,0" To="0,-100,0,0" AccelerationRatio=".9" BeginTime="0:0:5" Duration="0:0:1" />
</Storyboard>
</BeginStoryBoard>
</EventTrigger>
</Border.Triggers>
<TextBlock Text="{Binding StatusText, Mode=OneWay, NotifyOnTargetUpdated=True}"></TextBlock>
</Border>
这按预期工作,但有两个问题我不知道如何解决:
- 每当文本更改我不想要这个时,动画就会重新开始。我想要的是在它滑开之前等待 5 秒以重新启动。因此,如果文本不断更新,那么面板应该保持静止,直到距离上次更新超过 5 秒,然后向上滑动。
- 当应用程序启动时,动画会立即播放。我猜是因为初始绑定算作更新。我怎样才能阻止这种情况发生?