从ListViewItem中删除高亮效果

16 浏览
0 Comments

从ListViewItem中删除高亮效果

在一个ListView中,有ListViewItems,当鼠标悬停在它们上方或者它们被选中时,它们的外观不能改变。

我尝试使用以下样式来实现这一点,并且有些成功:


但是,这引发了一个新问题。当背景设置为“透明”时,当鼠标悬停在列表视图项上方时,我现在能够看到下图所示的悬停/光泽效果。

enter image description here

我尝试使用以下方法来解决这个问题,但没有成功。


有人有什么办法可以去除这个悬停效果吗?

0
0 Comments

问题:从ListViewItem中删除高亮效果的原因是什么?解决方法是什么?

原因:通过设置ListViewItem的Template属性来删除高亮效果。

解决方法1:


    

解决方法2(由Grant Winney建议):


    

感谢Grant Winney的解决方案,它解决了我的问题。我已经在这个问题上花了两天的时间!我想知道你是否知道一本好书或一些好的网站来获取有关样式的知识?

只有msdn、wpftutorial.net和Google,抱歉...也许其他人有想法。

我测试了Grant Winney的解决方案,它运行良好。

真是救命稻草。我也使用了Grant Winney的解决方案。最后,我需要一个包含窗口宽度的ListView,而Scrollviewer不适用于此-我不需要任何悬停/点击样式,非常感谢+1 🙂

最佳答案!第二个解决方案是最好的,第一个解决方案让我的整个组件消失了。

0
0 Comments

问题原因:ListViewItem的高亮效果导致了不需要的视觉效果。

解决方法:通过修改ListViewItem的样式来移除高亮效果。


  

以上代码可以将ListViewItem的背景设置为透明,同时将边框宽度设置为0,从而移除高亮效果。

0
0 Comments

问题原因:使用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的高亮效果。

0