フォアグラウンドカラーに同じStaticResourceを使用する2つのテキストボックスがあります。WPF:StaticResourceをアニメーション化すると、そのリソースを使用する他のコントロールが更新されます
最初のTextBoxの色を変更するアニメーションを適用すると、2番目の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>
とにかくこの周辺にはありますか?リソース自体を変更しますアニメーションでForeground
を変更、結合に単一StaticResource
を使用することにより、マット
おそらく、リソース上で 'x:Shared =" False "'を設定するだけです。しかし、それを検証していない。 –
@Kent: "WPFでは、リソースのデフォルトのx:Shared条件がtrueです。この条件は、特定のリソース要求が常に同じインスタンスを返すことを意味します。私はそれが単にブラシに "参照"を共有していると思う。 Brushが値型の場合、これはうまくいくが、ここでは、既定で既に設定されているので、効果があるとは思っていない。 ;) –