删除 Listview 鼠标悬停

Remove Listview mouse over

我有一个简单的列表视图。

<ListView  x:Name="DatabasesLstVw" ItemsSource="{Binding Path=Issues}"
                    ItemContainerStyle="{StaticResource removeMouseOverStyle}" 
                   AlternationCount="2" Grid.Row="1" Margin="20,10,20,0" 
                   HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                   FontSize="12" FontWeight="Normal" 
                   BorderThickness="0" Background="Transparent"
                   ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
            <ListView.Resources>
                <Style TargetType="GridViewColumnHeader">
                    <Setter Property="Visibility" Value="Collapsed" />
                </Style>
            </ListView.Resources>
            <ListView.View>
                <GridView >
                    <GridViewColumn Header="Message">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock TextWrapping="Wrap" Text="{Binding Name}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>

我创建了一种样式,试图删除默认的鼠标悬停和 select 样式。

 <Style x:Key="removeMouseOverStyle" TargetType="{x:Type ListViewItem}">
            <Style.Triggers>

                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="Transparent"></Setter>
                    <Setter Property="BorderThickness" Value="0"/>
                    <Setter Property="Margin" Value="0,0,0,0"/>
                    <Setter Property="Padding" Value="0"/>
                    <Setter Property="FontSize" Value="12"/>
                </Trigger>
                <Trigger Property="ItemsControl.IsMouseOver" Value="true">
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="BorderThickness" Value="0"/>
                    <Setter Property="Margin" Value="0"/>
                    <Setter Property="Padding" Value="0"/>
                    <Setter Property="FontSize" Value="12"/>     
                    <Setter Property="FontWeight" Value="Normal"/>
                </Trigger>
            </Style.Triggers>
        </Style>

如果不尝试创建它的 gif 图片,我就无法 post 它在做什么。基本上它会随着鼠标悬停而跳动一点。一开始我以为是设置边距,然后尝试填充和字体大小。

这个默认的鼠标悬停在做什么,我该如何删除它?

他们可以通过多种方式实施 selection\mouse。例如,通常是通过为每个州显示单独的边界来完成的。对于像 ListViewItem 这样简单的控件,最好覆盖它的 ControlTemplate 并在那里做你需要的事情。您可以使用默认控件模板,只需删除触发器:

<Style x:Key="removeMouseOverStyle"
           TargetType="ListViewItem">
        <Setter Property="SnapsToDevicePixels"
                Value="true" />
        <Setter Property="OverridesDefaultStyle"
                Value="true" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Border Name="Border"
                            Padding="2"
                            SnapsToDevicePixels="true"
                            Background="Transparent">
                        <GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
</Style>

使用此样式的项目不会在选择或鼠标悬停时改变它们的外观。此外,您可以使用基础 ItemsControl 控件 - 默认情况下它没有 selection\mouse 过度行为。