首页 > 解决方案 > 带有滚动条的区域上的白色方块

问题描述

我有一个自定义的滚动条样式,但它有这个烦人的小白方块。我想删除它,有什么想法吗?
烦人的小白方块:
烦人的小白方块

编辑:我想它可能是一个重复按钮

标签: wpfscrollbar

解决方案


这个问题显然与你的风格有关。
以及如何在没有看到这种风格的情况下回答您的问题?

根据我尝试猜测您可能拥有的样式,但我假设您没有更改默认的 ScrollViewer 模板,您只需为其属性设置值。

如果您查看默认模板,则x:Name="Corner"在 ScrollBar 之间的角上有一个矩形。

<ControlTemplate x:Key="ScrollViewerControlTemplate.Default"
                    TargetType="{x:Type ScrollViewer}">
    <Grid x:Name="Grid" Background="{TemplateBinding Background}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Rectangle x:Name="Corner"
                    Grid.Column="1" Grid.Row="1"
                    Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
        <ScrollContentPresenter x:Name="PART_ScrollContentPresenter"
                                Grid.Column="0" Grid.Row="0"
                                CanContentScroll="{TemplateBinding CanContentScroll}"
                                CanHorizontallyScroll="False" CanVerticallyScroll="False"
                                ContentTemplate="{TemplateBinding ContentTemplate}"
                                Content="{TemplateBinding Content}"
                                Margin="{TemplateBinding Padding}"/>
        <ScrollBar x:Name="PART_VerticalScrollBar"
                    Grid.Column="1" Grid.Row="0"
                    AutomationProperties.AutomationId="VerticalScrollBar"
                    Cursor="Arrow"
                    Maximum="{TemplateBinding ScrollableHeight}" Minimum="0"
                    Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
                    Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                    ViewportSize="{TemplateBinding ViewportHeight}"/>
        <ScrollBar x:Name="PART_HorizontalScrollBar"
                    AutomationProperties.AutomationId="HorizontalScrollBar"
                    Cursor="Arrow"
                    Grid.Column="0" Grid.Row="1"
                    Maximum="{TemplateBinding ScrollableWidth}"
                    Minimum="0"
                    Orientation="Horizontal"
                    Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
                    Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                    ViewportSize="{TemplateBinding ViewportWidth}"/>
    </Grid>
</ControlTemplate>

此矩形的背景颜色由DynamicResourcekey设置{x:Static SystemColors.ControlBrushKey}
因此,您可以在不更改模板的情况下创建一个具有相同键但颜色不同的新资源。
资源可以设置在您设置样式的相同位置。

定义此资源的示例:

    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                     Color="Red"/>

如果您确实更改了模板,那么您可以简单地删除这个矩形,那么这个角将是 ScrollViewer 的背景颜色。
您还可以在移除它之后,将其中一个 ScrollBars 拉伸到该角。


推荐阅读