【问题标题】:Styling a selected ListViewItem in Windows 8 CP在 Windows 8 CP 中为选定的 ListViewItem 设置样式
【发布时间】:2012-03-26 07:21:32
【问题描述】:

我想改变下图中所选项目的边框外观。

我已经在 msdn.com 和互联网上四处寻找,但没有发现任何有用的东西。

我该怎么做?

【问题讨论】:

  • 您使用的是 WPF 还是 Metro XAML 应用程序?它们是完全独立的框架,但您同时标记了它。

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


【解决方案1】:

选择外观是 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 并选择:

编辑其他模板 -> 编辑生成的项目容器 -> 编辑副本...

它会在上面的表单中为您创建一个样式,其中填充了默认模板。选择外观使用模板中的一些不同元素,您可能想要修改这些元素 - 这些可以通过在中选择 Selected 状态来查看Blend 中的“状态”面板并深入到“对象”面板中突出显示的项目。

【讨论】:

  • 谢谢,这正是我想要的。我一直忘记我有 Blend for Visual Studio 来帮助解决这些问题。
【解决方案2】:

我发现了另一个可能对其他人有帮助的解决方案:覆盖 App.xaml 中的特定画笔资源。它无需克隆任何默认样式即可工作,并且非常简单:

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

当然,还有更多的灌木可以被覆盖,它们的列表可以在这里找到:ListViewItem styles and templates

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2016-03-15
    相关资源
    最近更新 更多