如何使用ExtendedVisualStateManager.GoToElementState

时间:2012-08-12 17:51:30

标签: c# silverlight windows-phone-7 visualstatemanager

我有以下视觉状态定义:

<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的第一个参数,以便将动画附加到它?

0 个答案:

没有答案