自定义滚动条样式的问题?

3
这个矩形是什么,如何去掉它?
我只是在模板中设置滚动条:
<Style TargetType="ScrollBar">
    <Setter Property="Background" Value="#FF07468B"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ScrollBar">
                <Grid x:Name="GridRoot" Width="5" Background="{TemplateBinding Background}">
                    <Track x:Name="PART_Track" Grid.Row="0" IsDirectionReversed="true" Focusable="false">
                        <Track.Thumb>
                            <!-- thumb is defined somewhere -->
                            <Thumb x:Name="Thumb" Style="{StaticResource ScrollBarThumb}"/>
                        </Track.Thumb>
                        <Track.IncreaseRepeatButton>
                            <RepeatButton Command="ScrollBar.PageDownCommand" Opacity="0" Focusable="false"/>
                        </Track.IncreaseRepeatButton>
                        <Track.DecreaseRepeatButton>
                             <RepeatButton Command="ScrollBar.PageUpCommand" Opacity="0" Focusable="false"/>
                        </Track.DecreaseRepeatButton>
                    </Track>
                </Grid>
                <!-- removed triggers -->
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我怀疑这不是一个ScrollBar,更像是ListBox本身。该问题仅在水平滚动条可见时出现。
例如,在这里,有人对ScrollViewer进行了模板化,您可以看到图像没有工件或交叉点(或resizegrip或其他)。
当仅为滚动条制作模板时,我需要对ListBox做些什么?具体来说,它将是什么?

请在此输入图像描述


将ListBox背景设置为红色将产生以下效果:

请在此输入图像描述

因此,这个矩形是一些LightGray,但它从哪里来的呢?

也许需要一个 ResizeGrip 吗?你的图像显示整个窗口还是只有带滚动条的列表? - ken2k
你期望看到矩形之外的什么?我会尝试为此准备一个示例。 - pushpraj
@SJD,我还是不明白你的意思。Dropbox链接已经失效了。你能否把你的解决方案作为答案发布一下呢(包括proper滚动条样式)? - Sinatr
我还建议从这个链接http://www.nullskull.com/a/1525/styling-the-wpf-scrollviewer.aspx自定义滚动条的解决方案,巧合的是这里的两张图片也发布在那个链接中。 - pushpraj
交集是设计的一部分,无法删除,你可以在Windows中到处找到它,甚至在你阅读此评论的浏览器中也可以找到。我们能做的就是选择样式滚动条以获得良好的外观,例如 Android 或 Windows Phone。 - pushpraj
显示剩余4条评论
1个回答

3
在列表框或窗口中,“正常”滚动条的样式是通用的。您不能按照自己的意愿更改样式!这是一个小细节,也许没有人想过它。
为什么你看到那个矩形?
嗯,我猜微软的人有这三种可能性:
1. 水平条填充交叉点。 2. 垂直条填充交叉点。 3. 或者有一个实心矩形,其颜色与适当的滚动条相同。
所以,他们决定使用第三个选项。并且正如我所说,如果不改变滚动条的整个样式,就无法更改那个小细节。也许您可以使用此样式进行更改:http://www.nullskull.com/a/1525/styling-the-wpf-scrollviewer.aspx?:D

现在很清楚。谢谢!对于我来说,你最后的截图显然是想要的行为。我应该通过添加我的ScrollViewer重新设计Listbox(现在正在这里查看http://msdn.microsoft.com/en-us/library/ms754242.aspx),还是我需要做什么具体的操作(该文章没有提到任何关于ListBox的内容)? - Sinatr
@Sinatr 一旦你创建了自己的样式,就可以将该样式绑定到你的 ListBox 滚动视图器上。就像这样:http://stackoverflow.com/questions/8909602/silverlight-style-scrollviewer-for-listbox - Shmwel
你是对的。自定义ScrollViewer是正确的选择。 - Sinatr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接