異なる VisualState 間でコントロールのある種の共有リソース (つまり、ブラシ) を変更する簡単な方法があるかどうか疑問に思っています。たとえば、Brush を定義して、Border の Background と別の Rectangle の Fill の両方として使用したいと考えています。別の VisualState で、この背景ブラシを 1 か所 (リソース) で変更し、リソースを使用するすべての要素に反映させたいと考えています。
VisualState の Storyboard の TargetName の名前 (キーではなく) でリソースを参照できるかどうかはわかりません。
XAML でやろうとしていることの簡単な例を次に示します。
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SilverlightApplication.MainPage"
Width="200" Height="200">
<UserControl.Resources>
<SolidColorBrush x:Name="Background" x:Key="Background" Color="Black" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="MyStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="Red">
<Storyboard>
<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Color)">
<EasingColorKeyFrame KeyTime="00:00:00" Value="Red"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border Background="{StaticResource Background}" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="Red" BorderThickness="1"/>
<Rectangle Fill="{StaticResource Background}" Width="100" Height="100" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
</Grid>
</UserControl>
これらはSilverlightのStaticResourcesであるため、一度しかロードされず、変更できないと感じています。私は、WPF に DynamicResources の概念があることを知っています。すべての要素でブラシを再定義することなく、Silverlight でこの種の動作を実現する方法はありますか?