ListBox、ListView 和 GridView 项的样式

Styling for ListBox, ListView and GridView Items

这些控件的默认颜色似乎与 Windows 主题颜色相似。如何更改悬停、选定、选定的悬停和按下的颜色(代码或 XAML)?以下不适用于 ListView:

<ListView>
    <ListViewItemPresenter
        PointerOverBackground="#99CEEA"
        SelectedPressedBackground="#72BFE9"
        SelectedBackground="#72BFE9"
        SelectedPointerOverBackground="#99CEEA"
        />

在您的 VS/Blend 设计器中,右键单击您的 ListView 和 select

Edit Additional Templates > Edit Generated Item Container (ItemContainerStyle) > Edit a Copy...

在上面的弹出窗口 window 中,如果您希望此样式应用于 所有 您的 ListViewItem, select 适用于所有 否则只要给它一个名字。

我建议创建一个新的 资源字典 来存储所有 ListView 相关的样式。为此,只需点击 New... 按钮并为资源字典命名(例如 ListViewStyles.xaml)。

最后,点击 确定 按钮,您现在拥有一个完全生成的样式。

在样式的 ControlTemplate 中,您可以找到 ListViewItemPresenter 控件并相应地更新其颜色。

ListViewItemPresenter 在 XAML 中的错误位置。改变这个:

<ListView>
    <ListViewItemPresenter
        PointerOverBackground="#99CEEA"
        SelectedPressedBackground="#72BFE9"
        SelectedBackground="#72BFE9"
        SelectedPointerOverBackground="#99CEEA"
        />
</ListView>

对此:

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <ListViewItemPresenter
                            PointerOverBackground="#99CEEA"
                            SelectedPressedBackground="#72BFE9"
                            SelectedBackground="#72BFE9"
                            SelectedPointerOverBackground="#99CEEA" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
<ListView>