gpt4 book ai didi

wpf - 仅在设置颜色后才启动ColorAnimation

转载 作者:行者123 更新时间:2023-12-02 04:05:49 24 4
gpt4 key购买 nike

在启动窗口上,定义了一个带有TextBlock的网格,如下所示:

<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>

在TextBlock中,定义了一个简单的DoubleAnimation和ColorAnimation,因此没有什么特别的。在VS中按F5后,动画将直接开始。

删除 Foreground="Yellow"后出现奇怪的行为。默认情况下,TextBlock的前景设置为黑色(取决于首选的系统主题)。现在,两个动画都应该开始,并且颜色应该从黑色变为蓝色。事实并非如此,动画将无法开始。同样,通过在ColorAnimation中将 From属性设置为黑色,动画也不会开始。

为什么会出现这种现象,原因是什么?从我的角度来看,我看不出逻辑上的理由是否要设置颜色。

编辑(其他信息)

无论是否设置了Foreground属性,都不会引发异常。现在有趣的是,如果未设置Foreground属性,则将选择默认颜色。您可以通过编写以下代码来简单地进行验证: Debug.WriteLine(this.textBlock.Foreground.ToString());(另外添加了TextBlock的名称)。颜色由系统解决。同样,通过更改Windows主题,颜色也可以解决。因此,颜色隐式设置为TextBlock。应该工作吧?

编写 Foreground="Back"与当前选择的Windows主题不匹配。而不是这样做,我希望使用DynamicResource如下
Foreground="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"

StaticResource可以正常工作,而DynamicResource无法正常工作,因此动画无法开始。

首先,WPF知道隐式颜色。其次,DynamicResource出于任何原因均无法正常工作。为什么?可能的错误?

最佳答案

如果未设置该值,则将引发异常,因为该实例是不可变的,因此无法为默认前景设置动画。 (如果使用此类加载事件触发动画,它将被吞下。)

关于wpf - 仅在设置颜色后才启动ColorAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com