如何更改UWP中选定ListView项的高亮颜色(Windows 10)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (82)

我正在使用C#和XAML处理Windows 10应用程序。我有一个ListView,我想更改所选项目的默认HighLight颜色。我看到很多代码示例,但都是为WP8或Win8设计的,我试图实现这些示例,但它们不适用于我。

一般来说,我有麻烦修改控件的默认主题,因为我没有找到有用的文档。如果有人能帮助我突出显示颜色,并向我推荐良好的文档,这将是非常棒的。

提问于
用户回答回答于

实际上,发现造型属性的更好方法是使用Blend。

首先,在Blend中打开你的页面。然后右键点击你的ListView和去

编辑其他模板>编辑生成的项目容器(ItemContainerStyle)>编辑副本

给它一个名字,点击确定

现在,你已经为自己生成了完整的内置样式,ListViewItem并且您可以在其中找到有关其外观,动画和其他视觉行为的所有信息。

你应该看看这段代码 -

<ListViewItemPresenter CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
                       ContentMargin="{TemplateBinding Padding}" 
                       CheckMode="Inline" 
                       ContentTransitions="{TemplateBinding ContentTransitions}" 
                       CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
                       DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}" 
                       DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
                       DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}" 
                       DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}" 
                       FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}" 
                       FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}" 
                       HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
                       PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                       PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
                       PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
                       PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"
                       ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
                       SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
                       SelectionCheckMarkVisualEnabled="True" 
                       SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                       SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}" 
                       SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}"
                       VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />

看到线SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}"?这就是你可以将自己的颜色应用到它的地方。请记住,它应该是类型Brush而不是Color

用户回答回答于

如果你不想使用XAML,则使用c#来更改这些设置更简单(在我看来):

Application.Current.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(Colors.Red);
Application.Current.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(Colors.Red);

这样你可以真正地自定义你的项目。

扫码关注云+社区

领取腾讯云代金券