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

如何去除WPF ListView右下角的白色矩形区域?

解决WPF ListView滚动条交汇处白色矩形问题

你遇到的这个白色矩形是ScrollViewer默认模板里的PART_Corner元素,当垂直和水平滚动条同时显示时,这个角落元素会默认显示白色背景,和你自定义的深色滚动条风格冲突。解决方法很简单,只需要修改ScrollViewer的模板,调整这个角落的颜色或者直接隐藏它。

具体步骤

在你的Style.xaml中添加一个针对ScrollViewer的自定义样式,覆盖默认模板里的PART_Corner元素:

<Style TargetType="{x:Type ScrollViewer}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ScrollViewer}">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <!-- 内容展示区域 -->
                    <ScrollContentPresenter x:Name="PART_ScrollContentPresenter"
                                            CanContentScroll="{TemplateBinding CanContentScroll}"
                                            ContentTemplate="{TemplateBinding ContentTemplate}"
                                            Content="{TemplateBinding Content}"
                                            Grid.Column="0"
                                            Margin="{TemplateBinding Padding}"
                                            Grid.Row="0"/>

                    <!-- 垂直滚动条 -->
                    <ScrollBar x:Name="PART_VerticalScrollBar"
                               Cursor="Arrow"
                               Grid.Column="1"
                               Maximum="{TemplateBinding ScrollableHeight}"
                               Minimum="0"
                               Grid.Row="0"
                               Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
                               Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                               ViewportSize="{TemplateBinding ViewportHeight}"/>

                    <!-- 水平滚动条 -->
                    <ScrollBar x:Name="PART_HorizontalScrollBar"
                               Cursor="Arrow"
                               Grid.Column="0"
                               Maximum="{TemplateBinding ScrollableWidth}"
                               Minimum="0"
                               Orientation="Horizontal"
                               Grid.Row="1"
                               Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
                               Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                               ViewportSize="{TemplateBinding ViewportWidth}"/>

                    <!-- 修改角落背景为滚动条按钮的背景色,或者设置Visibility="Collapsed"直接隐藏 -->
                    <Rectangle x:Name="PART_Corner"
                               Grid.Column="1"
                               Grid.Row="1"
                               Fill="{StaticResource ScrollBarButtonBackgroundBrush}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

两种可选方案

  • 修改颜色:保持PART_Corner可见,将Fill绑定到你已有的滚动条背景资源(比如ScrollBarButtonBackgroundBrush),让角落颜色和滚动条风格统一。
  • 直接隐藏:把PART_Corner的Visibility属性设为Collapsed,彻底去掉这个角落元素。

添加完这个样式后,你的ListView会自动应用这个ScrollViewer模板,右下角的白色矩形就会消失或者和滚动条颜色一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:47:33