我有以下视觉状态定义:
<VisualStateManager.CustomVisualStateManager>
<ec:ExtendedVisualStateManager/>
</VisualStateManager.CustomVisualStateManager>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="Highlight">
<VisualState x:Name="Active">
<Storyboard>
<ColorAnimation Duration="0"
To="{StaticResource PhoneAccentColor}"
Storyboard.TargetProperty="(Shape.Stroke).(SolidColorBrush.Color)"
d:IsOptimized="True"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Inactive"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
还有一些矩形:
<Rectangle x:Name="A" Width="10" Height="10" Stroke="#00000000" StrokeThickness="4" />
<Rectangle x:Name="B" Width="10" Height="10" Stroke="#00000000" StrokeThickness="4" />
<Rectangle x:Name="C" Width="10" Height="10" Stroke="#00000000" StrokeThickness="4" />
<Rectangle x:Name="D" Width="10" Height="10" Stroke="#00000000" StrokeThickness="4" />
在我的布局根目录中。
我想将Active
状态应用于矩形A和C.这感觉就像是ExtendedVisualStateManager.GoToElementState
的工作:
ExtendedVisualStateManager.GoToElementState(this.A, "Active", true);
ExtendedVisualStateManager.GoToElementState(this.B, "Inactive", true);
ExtendedVisualStateManager.GoToElementState(this.C, "Active", true);
ExtendedVisualStateManager.GoToElementState(this.D, "Inactive", true);
但是,这不起作用 - 动画没有定义Storyboard.TargetName
。
如何抓住故事板中传递给GoToElementState
的第一个参数,以便将动画附加到它?