WPF从GridView的选择/鼠标悬停中移除光泽效果
我已经找到了这个简单问题的答案,但还没有找到答案。 我有以下代码:WPF从GridView的选择/鼠标悬停中移除光泽效果,wpf,listview,gridview,styles,Wpf,Listview,Gridview,Styles,我已经找到了这个简单问题的答案,但还没有找到答案。 我有以下代码: <Grid> <Border BorderBrush="#666666" BorderThickness="1,1,1,1" CornerRadius="3"> <Border.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<Grid>
<Border BorderBrush="#666666" BorderThickness="1,1,1,1" CornerRadius="3">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF020f1e" Offset="0"/>
<GradientStop Color="#FF484F58" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<ListView Name="lvUsers" Background="Transparent" Foreground="White" Margin="3" FontSize="12" SelectionChanged="lvUsers_SelectionChanged">
<ListView.Template>
<ControlTemplate TargetType="{x:Type ListView}">
<Border CornerRadius="1" BorderThickness="1" BorderBrush="Transparent">
<ScrollViewer>
<ItemsPresenter />
</ScrollViewer>
</Border>
</ControlTemplate>
</ListView.Template>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding ID}" IsChecked="{Binding IsChecked}" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged" IsHitTestVisible="False" Focusable="False"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding ID}" Header="ID" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" />
</GridView.Columns>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</Border>
</Grid>
当我选择或“鼠标悬停”一行时,会产生以下效果:
我想消除这种光泽效果并获得与普通“ListView”完全相同的样式:
你能告诉我最简单的方法吗
非常感谢ListViewItem在其模板(Controltemplate.triggers)中有一些奇特的触发器,这些触发器在某些条件下(例如,对于选定的项目)会更改背景。要删除它们,请设置一个不带触发器的简化模板:
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<GridViewRowPresenter
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<!-- your triggers for IsMouseOver and IsSelected -->
</Style.Triggers>
很明显,您正在使用某种自定义样式来提供这种效果 您可以尝试将
ListView
的Style
属性设置为{x:Null}
以使用默认样式:
<ListView Style="{x:Null}" Name="lvUsers" Background="Transparent" Foreground="White" Margin="3" FontSize="12" SelectionChanged="lvUsers_SelectionChanged">
...
...