WPF移除ListView单元格点击后的高亮与边框效果
解决WPF ListView图片点击时的高亮与边框问题
要移除ListView内图片点击时的背景高亮和边框,核心是修改ListViewItem的默认样式——每个列表项本质是ListViewItem,它的默认模板包含了选中、焦点状态下的高亮效果,我们需要重写这部分逻辑:
修改步骤
替换你代码里的<ItemsControl.ItemContainerStyle>部分为以下完整样式:
<ItemsControl.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="Grid.Column" Value="{Binding ColumnIndex}" /> <Setter Property="Grid.Row" Value="{Binding RowIndex}" /> <!-- 让ListViewItem不响应点击,避免触发选中状态 --> <Setter Property="IsHitTestVisible" Value="False" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListViewItem"> <!-- 直接显示内容,彻底移除默认的选中/高亮视觉元素 --> <ContentPresenter /> </ControlTemplate> </Setter.Value> </Setter> </Style> </ItemsControl.ItemContainerStyle>
补充说明
- 设置
IsHitTestVisible="False"是为了让ListViewItem不再抢占Image的MouseDown事件,同时避免触发自身的选中状态。 - 重写
Template为纯ContentPresenter,彻底去掉了ListViewItem默认的选中高亮、边框等所有视觉反馈。
你之前在Window.Resources里设置的SystemColors.HighlightBrushKey作用有限,因为ListViewItem的默认模板可能使用了硬编码的视觉资源,所以重写ItemContainerStyle是最彻底的解决方式。
内容的提问来源于stack exchange,提问作者Rando Hinn
相关产品推荐
相关产品推荐

