WPF 中ListView如何修改其选中时的样式
时间: 2024-09-27 09:11:35 浏览: 59
WPF ListView 漂亮样式
在Windows Presentation Foundation (WPF)中,`ListView`更改选中项的样式通常涉及修改`ItemContainerStyle`和`SelectionStyle`。以下是一个基本步骤:
1. **打开`Window.Resources`区域**:在`Window`或`UserControl`标签内找到`Resources`子元素,这是放置样式的地方。
2. **创建`ItemContainerStyle`**:定义一个新的`Style`,并为其指定一个名字,如`SelectedListViewItemStyle`。在`Selector`部分设置`ControlType`为`ListBoxItem`,因为`ListView`的每个项目都是由`ListBoxItem`呈现的。
```xml
<ResourceDictionary>
<Style x:Key="SelectedListViewItemStyle" TargetType="ListBoxItem">
<Setter Property="Background" Value="LightBlue" />
<Setter Property="Foreground" Value="Black" />
<!-- 添加其他选中样式,如边框、文字效果等 -->
</Style>
</ResourceDictionary>
```
3. **创建`SelectionStyle`**:同样地,创建一个新的`Style`,例如`ListViewSelectionStyle`,设置选中状态下`ListBoxItem`的样式,包括`FocusVisualStyle`等。
```xml
<Style x:Key="ListViewSelectionStyle" TargetType="ListBox">
<Setter Property="SelectionBoxVisualState">
<Setter.Value>
<VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver"/>
<VisualState x:Name="Focused"/>
<!-- 可以添加更多状态,如Pressed或Disabled -->
</VisualStateGroup>
<!-- 其他自定义状态,如Selected状态 -->
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected"/>
<VisualState x:Name="Selected"Storyboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Style)" Storyboard.TargetName="ItemsPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SelectedListViewItemStyle}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateGroups>
</Setter.Value>
</Setter>
</Style>
```
4. **应用到ListView上**:最后,在`ListView`元素上设置`ItemContainerStyle`和`SelectionStyle`为你刚刚创建的样式。
```xml
<ListView ItemsSource="{Binding YourItems}" ItemContainerStyle="{StaticResource SelectedListViewItemStyle}" SelectionStyle="{StaticResource ListViewSelectionStyle}">
<!-- ... -->
</ListView>
```
现在`ListView`的选中项目将会应用你定义的样式。
阅读全文