gpt4 book ai didi

WPF:对 StaticResource 进行动画处理会更新使用该资源的其他控件

转载 作者:行者123 更新时间:2023-12-02 17:32:22 26 4
gpt4 key购买 nike

我有两个文本框,它们使用相同的 StaticResource 作为前景色。

当我应用更改第一个 TextBox 颜色的动画时,第二个 TextBox 上的颜色也会更改。

如果我不使用 StaticResource,则不会发生这种情况,因此我猜测动画正在更改资源中定义的画笔的颜色,而不是第一个 TextBox 上的前景色。

这是我正在使用的代码;

<Page.Resources>
<SolidColorBrush x:Key="TextBrush"
Color="Black" />

<Storyboard x:Key="Glow"
TargetProperty="Foreground.Color"
Storyboard.TargetName="txt1">
<ColorAnimation To="Blue"
Duration="0:0:0.1" />
</Storyboard>
<Storyboard x:Key="Normal"
TargetProperty="Foreground.Color"
Storyboard.TargetName="txt1">
<ColorAnimation To="Yellow"
Duration="0:0:0.1" />
</Storyboard>
</Page.Resources>

<StackPanel>
<StackPanel.Triggers>
<EventTrigger RoutedEvent="StackPanel.MouseEnter">
<BeginStoryboard Storyboard="{StaticResource Glow}" />
</EventTrigger>
<EventTrigger RoutedEvent="StackPanel.MouseLeave">
<BeginStoryboard Storyboard="{StaticResource Normal}" />
</EventTrigger>
</StackPanel.Triggers>

<TextBlock Name="txt1"
Foreground="{StaticResource TextBrush}">Text One</TextBlock>
<TextBlock Name="txt2"
Foreground="{StaticResource TextBrush}">Text Two</TextBlock>
</StackPanel>

还有这方面的事情吗?

马特

最佳答案

通过在绑定(bind)中使用单个 StaticResource,更改动画中的 Foreground 将更改资源本身。此行为是设计使然,因为其他任何操作都需要资源的完整副本,这会大大降低使用 StaticResource 的实用性和好处。

当然,简单的解决方法是不使用 StaticResource ,或者为每个 TextBox 使用单独的资源。

关于WPF:对 StaticResource 进行动画处理会更新使用该资源的其他控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4865965/

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