我使用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>
...
答案 0 :(得分:3)
在ListView.Resources
中,覆盖ItemBackgroundHover
画笔资源:
<SolidColorBrush x:Key="ItemBackgroundHover" Color="Transparent" />
如果您不希望突出显示所选项目,请对ItemBackgroundSelected
执行相同操作。
如果您支持Modern Light主题,则可能还需要覆盖前景画笔。您可以看到已应用的画笔here。
如果你用自己的风格替换现代UI的ListViewItem
风格,这将不会起作用,但是你可以将它们放在他们的风格之外,它应该有效:
<Style TargetType="ListViewItem"
BasedOn="{StaticResource {x:Type ListViewItem}}">
此外,根据您的屏幕截图,您可能不需要使用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>
答案 1 :(得分:1)
这里较老的答案对我不起作用。我被迫覆盖了ListView.ItemContainerStyle:
<Style TargetType="{x:Type 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 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>
我发现并修改了here中的代码,Mike Strobel在另一个答案中提到了该代码。我做的大部分更改都是删除了触发器部分。