删除Listview鼠标悬停

时间:2016-05-11 09:42:51

标签: c# wpf listviewitem

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

<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>

我创建了一个样式,尝试删除默认鼠标并选择样式。

 <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图片。基本上它用鼠标跳过一点点。首先我认为是设置边距,然后尝试填充和字体大小。

此默认鼠标到底是做什么的,以及如何将其删除?

1 个答案:

答案 0 :(得分:2)

他们可以通过多种方式实现选择\鼠标悬停。例如,通常通过为每个州显示单独的边框来完成。对于像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控件 - 默认情况下它没有选择\鼠标悬停行为。