使用单个故事板定位多个控件以更改捕捉的视图状态的样式

时间:2012-09-13 06:11:08

标签: windows-runtime winrt-xaml

我有一个Windows应用商店的XAML页面,它在网格中有十几个按钮。它们都具有相同的样式。 E.g。

<Button Content="1"  Name="btn1" Grid.Row="1" Grid.Column="0" Style="{StaticResource PadButtonStyle}"/>
<Button Content="2"  Name="btn3" Grid.Row="2" Grid.Column="0" Style="{StaticResource PadButtonStyle}"/>
<Button Content="3"  Name="btn4" Grid.Row="3" Grid.Column="0" Style="{StaticResource PadButtonStyle}"/>
<!-- ... -->

当页面从全屏横向视图状态切换为snapped时,我想使用故事板将所有这些按钮的样式从PadButtonStyle更改为SnappedPadButtonStyle。

使用类似下面的内容我可以做到这一点,但我需要为每个按钮创建一个ObjectAnimationUsingKeyFrames。

<VisualState x:Name="Snapped">
    <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="btn1" Storyboard.TargetProperty="Style">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedPadButtonStyle}"/>
            </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

有没有办法集体更改所有按钮的样式而不单独引用每个按钮?

1 个答案:

答案 0 :(得分:0)

我仍在寻找将故事板应用于控件集合的方法。

然而,在我看来,更好的解决方案是创建一个完全独立的网格,仅包含捕捉视图所需的控件,然后直接在XAML中应用所需的样式。

然后我在Snapped VisualState中需要做的就是折叠一个Grid并使另一个可见。它需要在XAML中使用更多控件,但会大大降低故事板要求。