日常开发中,需要展示大量数据时,我们常常会用到ListBox、ListView等条目控件。下面以ListBox为例,来详细说明一下如何修改控件的默认样式。
众所周知,点击ListBox控件的其中一项时,会出现深蓝色选中背景,文字颜色变为白色,如图:
此时,若我们点击其它地方的按钮,这时,由于焦点丢失,选中项的背景色变成了灰色,文字颜色变为黑色,如图:
很容易想到,这些颜色既然不是我们设置的,必然就是系统早就定义好的了。那么,如果我们不想使用这些系统默认样式,想自己定义一个,如点击时会出现金色渐变背景,文字变为绿色,失去焦点时会出现亮绿色渐变背景,文字变为蓝色,该怎么办呢?
首先需要考虑的是,如果要达到我们的目标,需要改动的到底是哪个控件的样式:ListBox还是ListBoxItem。这个,很好理解,需要修改的是ListBoxItem的样式。当然,如果想不到这一点的话,也很容易定位到这里:(在此,先推荐一个小工具WPF Inspector)用Inspector查看,定位到ListBox的选中项,截图如下:
于是,很容易的,我们就明白了,想要达到我们的目的,我们需要修改的是ListBoxItem的样式。
那么,ListBoxItem的默认样式是怎样的呢?在此,再推荐一个小工具XamlPadX,安装后,我们可以在安装目录下找到一个名为ControlStyle.exe的文件,点击直接运行,在下拉框中选择ListBoxItem,于是ListBoxItem的默认样式就出现在我们面前了:
<Style TargetType="ListBoxItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Style.Resources> <ResourceDictionary /> </Style.Resources> <Setter Property="Panel.Background"> <Setter.Value> <SolidColorBrush>#00FFFFFF</SolidColorBrush> </Setter.Value> </Setter> <Setter Property="Control.Hor