从ListViewItem中删除高亮效果
问题:从ListViewItem中删除高亮效果的原因是什么?解决方法是什么?
原因:通过设置ListViewItem的Template属性来删除高亮效果。
解决方法1:
解决方法2(由Grant Winney建议):
感谢Grant Winney的解决方案,它解决了我的问题。我已经在这个问题上花了两天的时间!我想知道你是否知道一本好书或一些好的网站来获取有关样式的知识?
只有msdn、wpftutorial.net和Google,抱歉...也许其他人有想法。
我测试了Grant Winney的解决方案,它运行良好。
真是救命稻草。我也使用了Grant Winney的解决方案。最后,我需要一个包含窗口宽度的ListView,而Scrollviewer不适用于此-我不需要任何悬停/点击样式,非常感谢+1 🙂
最佳答案!第二个解决方案是最好的,第一个解决方案让我的整个组件消失了。
问题原因:使用GridView作为ListView的项模板时,会出现默认的高亮效果,即当选中某一项时,该项会出现高亮显示。然而,在某些情况下,我们不希望出现这种高亮效果。
解决方法:通过修改ListViewItem的样式来移除高亮效果。具体方法如下:
1. 首先,需要在XAML文件中引入控件的命名空间:
<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:controls="clr-namespace:System.Windows.Controls;assembly=PresentationFramework">
2. 然后,在Window或者Page的资源中定义样式:
<Window.Resources> <Style TargetType="{x:Type controls:ListViewItem}"> <Setter Property="Background" Value="Transparent" /> <Setter Property="BorderBrush" Value="Transparent" /> <Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type controls:ListViewItem}"> <Grid Background="{TemplateBinding Background}"> <Border Name="Selection" Visibility="Collapsed" /> <!-- This is used when GridView is put inside the ListView --> <GridViewRowPresenter Grid.RowSpan="2" Margin="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources>
3. 最后,在ListView中应用该样式:
<ListView> <ListView.View> <GridView> <GridViewColumn Header="Column 1" Width="100" /> <GridViewColumn Header="Column 2" Width="100" /> <GridViewColumn Header="Column 3" Width="100" /> </GridView> </ListView.View> </ListView>
通过以上步骤,就可以移除ListViewItem的高亮效果。