在ListView中指定VisualStateGroups

时间:2012-05-07 16:23:35

标签: c# xaml windows-8 windows-runtime winrt-xaml

我正在尝试重新定义ListView(Metro风格应用程序)的所选项目的外观。

我是通过在模板中定义VisualStateGroups来实现的。

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="CommonStates">
        <VisualState x:Name="Normal" />
        <VisualState x:Name="PointerOver">
            <Storyboard>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="expenseItem" Storyboard.TargetProperty="Background">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="LightGray"/>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>

    <VisualStateGroup x:Name="SelectionStates">
        <VisualState x:Name="Unselected" />
        <VisualState x:Name="Selected">
            <Storyboard>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="itemLocationName" Storyboard.TargetProperty="Foreground">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ExpenseListHighlightedText}"/>
                </ObjectAnimationUsingKeyFrames>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="expenseItem" Storyboard.TargetProperty="Background">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationGradientBlue}"/>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

我的问题是,当我将光标放在所选项目上时,背景会发生变化,即使我不想这样。当我搬出时,该项目获得“正常”背景而不是保持“选定”背景。

如何指定背景不得在所选项目上更改?

编辑:我仍然希望对未选中的项目产生影响。

1 个答案:

答案 0 :(得分:3)

您需要从PointerOver状态中删除故事板。