C# 鼠标悬停时如何从listviewitem中删除奇怪的边框
我有一个带有C# 鼠标悬停时如何从listviewitem中删除奇怪的边框,c#,wpf,C#,Wpf,我有一个带有列表视图项的列表视图。我将样式触发器设置为覆盖IsMouseOver 模板化ListViewItem模板,然后将其边框厚度设置为0: <ControlTemplate x:Key="ListViewItemControlTemplate" TargetType="{x:Type ListViewItem}"> <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThic
列表视图项的列表视图
。我将样式触发器设置为覆盖IsMouseOver
模板化ListViewItem模板,然后将其边框厚度设置为0:
<ControlTemplate x:Key="ListViewItemControlTemplate" TargetType="{x:Type ListViewItem}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="#1F26A0DA"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#A826A0DA"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Selector.IsSelectionActive" Value="False"/>
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="#3DDADADA"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#FFDADADA"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Selector.IsSelectionActive" Value="True"/>
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="#3D26A0DA"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#FF26A0DA"/>
</MultiTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
您还需要在ListViewItem样式中设置此模板:
<Setter Property="Template" Value="{StaticResource ListViewItemControlTemplate}" />
模板取出ListViewItem模板,然后将其边框厚度设置为0:
<ControlTemplate x:Key="ListViewItemControlTemplate" TargetType="{x:Type ListViewItem}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="#1F26A0DA"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#A826A0DA"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Selector.IsSelectionActive" Value="False"/>
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="#3DDADADA"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#FFDADADA"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Selector.IsSelectionActive" Value="True"/>
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="#3D26A0DA"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#FF26A0DA"/>
</MultiTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
您还需要在ListViewItem样式中设置此模板:
<Setter Property="Template" Value="{StaticResource ListViewItemControlTemplate}" />
它仅在鼠标悬停时出现?是的,仅在鼠标悬停时出现。很奇怪。我试图添加更多的带有边距、填充等的设置器,但没有任何效果。在声明ListViewItem时您要设置哪些属性?谢谢@Cfun,请查看我编辑的op,它现在包含了整个xaml代码。谢谢它只在鼠标结束时出现?是的,只在鼠标结束时出现。很奇怪。我试图添加更多的带有边距、填充等的设置器,但没有任何效果。在声明ListViewItem时您要设置哪些属性?谢谢@Cfun,请查看我编辑的op,它现在包含了整个xaml代码。谢谢奇怪,我的绑定不再工作,复选框消失。您必须覆盖ContentTemplate。尝试用
替换ControlTemplate中的ContentPresenter标记。相同的行为:所有列项都消失并替换为namespace.mylist。其中mylist是我在itemssource绑定中使用的列表。这里相同,所有绑定都消失了。奇怪的是,列和绑定对我来说仍然很好。我唯一能建议的另一件事是自己生成模板,而不是使用我提供的模板。转到控件的属性,转到Miscellaneous->Template,单击控件右侧的小方框并选择“转换为新资源”。如果绑定和列等都正常,则可以改为编辑该模板中的边框。奇怪的是,我的绑定不再工作,复选框消失。您必须覆盖ContentTemplate。尝试用
替换ControlTemplate中的ContentPresenter标记。相同的行为:所有列项都消失并替换为namespace.mylist。其中mylist是我在itemssource绑定中使用的列表。这里相同,所有绑定都消失了。奇怪的是,列和绑定对我来说仍然很好。我唯一能建议的另一件事是自己生成模板,而不是使用我提供的模板。转到控件的属性,转到Miscellaneous->Template,单击控件右侧的小方框并选择“转换为新资源”。如果绑定和列等都正常,则可以在该模板中编辑边框。