在我的WPF应用程序中,我有两个列表视图。一个常规的只有几个项目,另一个是GridView。
常规工作正常,如;我点击一个项目,它设置我指定的背景颜色。那里没有问题。
然而,Gridview似乎有一个完全不同的默认样式/主题。它将我选择的行显示为2种颜色的组合。那么,他们为什么表现不同?更重要的是;如何为Gridview Listview提供与常规样式相同的样式?
我尝试过使用不同地方的代码,包括以下代码: Removing WPF ListView/GridView highlight chrome和 WPF ListBox turn off hover effect
无论我尝试什么,它仍然有一个带有2个颜色渐变的selecteditem行。
归功于YoupTube的链接 下面我添加了使用的样式,任何人都有一些改进,让我知道:)。
<!-- ListView w/ GridColumns -->
<Style x:Key="ListViewWithGridColumns" TargetType="ListView">
<Style.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</Style.Resources>
<Setter Property="Foreground" Value="DimGray" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListView">
<Border CornerRadius="4" BorderThickness="1" BorderBrush="{DynamicResource SolidBorderBrush}">
<ItemsPresenter></ItemsPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border CornerRadius="2" SnapsToDevicePixels="True"
BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
<Border Name="InnerBorder" CornerRadius="1" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Name="UpperHighlight" Visibility="Collapsed" Fill="#75FFFFFF" />
<GridViewRowPresenter Grid.RowSpan="2" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Grid>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="DodgerBlue" />
<Setter Property="Foreground" Value="WhiteSmoke" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>