如何去除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
相关产品推荐
相关产品推荐

