在Windows 8 CP中为选定的ListViewItem设置样式

时间:2012-03-08 19:54:05

标签: c# xaml windows-8 microsoft-metro

我想在下面链接的图片中更改所选项目边框的外观。

enter image description here

我已经在msdn.com和互联网上四处寻找,但我发现没什么用处。

我该怎么做?

2 个答案:

答案 0 :(得分:16)

选择外观是ListViewItem的ControlTemplate的一部分。要修改整个ListView的模板,请使用ItemContainerStyle将Style应用于每个项目,该项目可以包含模板的修改版本。

<ListView>
  <ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="ListViewItem">
            ...
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </ListView.ItemContainerStyle>
</ListView>

ListViewItem的默认模板非常复杂,因此为了保留尽可能多的默认行为并为您提供一个良好的起点,最简单的方法是使用Blend为您创建副本。

在Blend中,右键单击ListView并选择:

修改其他模板 - &gt;编辑生成的项目容器 - &gt;编辑副本...

它将在上面的表单中为您创建一个样式,并填入默认模板。选择外观使用模板中您可能想要修改的几个不同元素 - 可以通过选择“已选择”状态来查看这些元素。 Blend中的States面板,并在Objects面板中钻取突出显示的项目。

答案 1 :(得分:2)

我发现了另一种可能对其他人有帮助的解决方案:覆盖App.xaml中的特定画笔资源。它可以在不克隆任何默认样式的情况下工作,并且简单如下:

<SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="myColor1"/>
<SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="myColor2"/>

当然,可以覆盖更多的灌木丛,可在此处找到它们的列表:ListViewItem styles and templates

请注意,此方法会更改应用程序中所有ListView的外观。