【发布时间】:2012-03-26 07:21:32
【问题描述】:
我想改变下图中所选项目的边框外观。
我已经在 msdn.com 和互联网上四处寻找,但没有发现任何有用的东西。
我该怎么做?
【问题讨论】:
-
您使用的是 WPF 还是 Metro XAML 应用程序?它们是完全独立的框架,但您同时标记了它。
标签: c# xaml windows-8 microsoft-metro
我想改变下图中所选项目的边框外观。
我已经在 msdn.com 和互联网上四处寻找,但没有发现任何有用的东西。
我该怎么做?
【问题讨论】:
标签: c# xaml windows-8 microsoft-metro
选择外观是 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 中的“状态”面板并深入到“对象”面板中突出显示的项目。
【讨论】:
我发现了另一个可能对其他人有帮助的解决方案:覆盖 App.xaml 中的特定画笔资源。它无需克隆任何默认样式即可工作,并且非常简单:
<SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="myColor1"/>
<SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="myColor2"/>
当然,还有更多的灌木可以被覆盖,它们的列表可以在这里找到:ListViewItem styles and templates。
请注意,此方法会更改应用程序中所有 ListView 的外观。
【讨论】: