从ListViewItem删除突出显示效果 [英] Remove Highlight Effect from ListViewItem
问题描述
在 ListView
中有 ListviewItems
,当鼠标悬停在它们上面时,它们不得更改外观已选择。
In a ListView
there are ListviewItems
where they must not change appearance when the mouse is over them or they are selected.
我试图用这种风格来实现,并且有所成就成功:
I tried to accomplish that with this style and did somewhat succeed:
<Style x:Key="ItemContainerStyle1" TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Focusable" Value="False" />
</Trigger>
</Style.Triggers>
</Style>
但这引发了新问题。当背景设置为透明时,当鼠标悬停在列表视图项上时,我现在可以看到如下图所示的悬停/光泽效果。
But the it raised a new issue. When the background is set to "Transparent" I am now able to see this hover/glossy effect that is shown at the picture below, when the mouse is over a list view item.
我有
<Style TargetType="{x:Type ListViewItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#00000000"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#00000000"/>
</Style.Resources>
</Style>
有人知道如何消除这种悬停效果吗?
Anyone have an idea how to remove this hover effect?
推荐答案
我不知道这是否是唯一的解决方案,但我按如下操作(通过设置 Template
ListViewItem
s的属性):
I don't know if this is the only solution but I did it as follows (by setting the Template
property of the ListViewItem
s):
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border
BorderBrush="Transparent"
BorderThickness="0"
Background="{TemplateBinding Background}">
<GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
编辑:
或者按照格兰特·温尼(Grant Winney)的建议(我没有亲自测试过):
Or as Grant Winney suggests (I did not test that myself):
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
这篇关于从ListViewItem删除突出显示效果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!