Wpf 仅当设置了颜色时,ColorAnimation才会启动
在启动窗口中,定义了一个带有TextBlock的网格,如下所示:Wpf 仅当设置了颜色时,ColorAnimation才会启动,wpf,Wpf,在启动窗口中,定义了一个带有TextBlock的网格,如下所示: <Grid> <TextBlock Text="stackoverflow.com" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Yellow"> <TextBlock.Triggers>
<Grid>
<TextBlock Text="stackoverflow.com"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="Yellow">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="TextBlock.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="200"
Duration="0:0:5"
Storyboard.TargetProperty="(TextBlock.FontSize)" />
<ColorAnimation To="Blue"
Duration="0:0:5"
Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
</Grid>
StaticResource工作正常,而DynamicSource不工作,因此动画不会启动
首先,WPF知道隐含的颜色。其次,DynamicResource由于任何原因都无法工作。为什么?可能的错误?如果未设置该值,将引发异常,则无法设置默认前景的动画,因为该实例是不可变的。(如果您使用像这样加载的事件触发动画,它将被吞没。)根据您的回答,我已编辑了我的问题。关于WPF@System.Data中的不可变类型,您能更深入地了解一下吗?@System.Data:这些工作大部分都是dp系统内部的,所以我不能肯定地告诉您任何事情。我只让我的测试应用程序抛出异常,该异常指出问题在于目标的不变性。使用StaticResource就像直接在对象上设置一个值一样,这样可以工作,但DynamicSource会创建一个引用。动画代码实际上有一些复制Freezable的机制,但这显然没有帮助。
Foreground="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"