You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除WPF中ListView右下角的方形控件?

解决WPF ListView方形控件遮挡亚克力效果的问题

你说的方形控件大概率是ListView默认模板里的滚动条角落填充块,或是选中项的高亮边框,直接修改模板就能解决,以下是具体方案:

方案一:移除滚动条角落填充块

如果是滚动条交汇的空白方块,修改ListView的ControlTemplate,去掉默认的角落填充元素:

<ListView>
    <ListView.Template>
        <ControlTemplate TargetType="ListView">
            <Border Background="Transparent" BorderThickness="0">
                <ScrollViewer x:Name="ScrollViewer" 
                              Padding="{TemplateBinding Padding}"
                              Background="Transparent"
                              HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                              VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
                              CanContentScroll="{TemplateBinding ScrollViewer.CanContentScroll}">
                    <ItemsPresenter />
                </ScrollViewer>
            </Border>
        </ControlTemplate>
    </ListView.Template>
</ListView>

方案二:透明选中项/焦点边框

如果是选中项的方形高亮框,修改ListViewItem模板,把选中、焦点状态的背景和边框设为完全透明:

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <Border x:Name="Bd" 
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                Padding="{TemplateBinding Padding}">
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter TargetName="Bd" Property="Background" Value="Transparent" />
                                <Setter TargetName="Bd" Property="BorderBrush" Value="Transparent" />
                            </Trigger>
                            <Trigger Property="IsFocused" Value="true">
                                <Setter TargetName="Bd" Property="BorderBrush" Value="Transparent" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

方案三:快速全局透传背景

如果上面两种方案没起效,直接给ListView及内部滚动视图设置透明背景,同时去掉边框:

<ListView Background="Transparent"
         BorderThickness="0"
         ScrollViewer.Background="Transparent">
    <!-- 你的列表内容 -->
</ListView>

注意:如果用了亚克力效果,要确保ListView的父容器也设置Background="Transparent",保证背景透传生效。

内容的提问来源于stack exchange,提问作者RandomUserOnTheInternet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:19:02