如何删除 ListView 行的悬停样式?

Mar*_*man 1 wpf modern-ui

我正在使用Modern UI,并且我有一个包含 Gridview 的 ListView 。当我将鼠标悬停在一行上或选择一行时,该行会应用背景颜色。我怎样才能删除这个样式?

<ListView ... >
    <ListView.Resources>
        <SolidColorBrush x:Key="ItemBackgroundHover" Color="Transparent" />
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="True">
                    <Setter Property="Background" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListView.Resources>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Action">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                    ...
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mik*_*bel 5

在您的 中ListView.Resources,覆盖ItemBackgroundHover画笔资源:

<SolidColorBrush x:Key="ItemBackgroundHover" Color="Transparent" />
Run Code Online (Sandbox Code Playgroud)

ItemBackgroundSelected如果您不希望突出显示所选项目,请执行相同的操作。

如果您支持 Modern Light 主题,您可能还需要覆盖前景画笔。您可以在此处看到应用的画笔。

ListViewItem如果您用自己的样式替换 Modern UI 的样式,这将不起作用,但您可以以他们的样式为基础,并且它应该可以工作:

<Style TargetType="ListViewItem"
       BasedOn="{StaticResource {x:Type ListViewItem}}">
Run Code Online (Sandbox Code Playgroud)

另外,根据您的屏幕截图,您可能不需要使用 a ListView,因为您显然不关心选择项目。您可以使用一个简单的ItemsControl.


要删除按钮镶边,您可以创建如下样式:

<Style x:Key="GlyphButton" TargetType="Button">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Border>
          <ContentPresenter x:Name="ContentSite" />
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsPressed" Value="True">
            <Setter TargetName="ContentSite"
                    Property="Margin"
                    Value="1,1,-1,-1" />
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)