0

ListView(メトロスタイルのアプリケーション)の選択したアイテムの外観を再定義しようとしています。

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>

私の問題は、選択したアイテムの上にカーソルを置くと、それを望まなくても背景が変わることです。そして、私が引っ越すと、アイテムは「選択された」背景を維持するのではなく、「通常の」背景を取得します。

選択したアイテムの背景が変更されないように指定するにはどうすればよいですか?

編集:まだ選択されていないアイテムに過剰な影響を与える必要があります。

4

1 に答える 1

3

PointerOver 状態からストーリーボードを削除する必要があります。

于 2012-05-07T16:39:18.460 に答える