自定义ScrollBar样式工件?

时间:2014-06-11 11:49:30

标签: c# wpf

这个矩形是什么以及如何摆脱它?

enter image description here

我只是模仿滚动条:

<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本身。只有在水平滚动条可见时才会出现此问题。


例如,here家伙模板化ScrollViewer并且您可以看到图像没有人工制品或交叉点(或resizegrip,或其他)。

仅模板滚动条时,是否需要对ListBox执行某些操作?究竟会是什么?

enter image description here


制作ListBox背景Red将产生以下内容:

enter image description here

所以这个矩形是LightGray,但它来自哪里?

1 个答案:

答案 0 :(得分:3)

scrollBar或窗口中“普通”listBox的样式是通用的。

您无法根据需要更改样式!这是可能没有人想到它的一个小细节。

为什么会看到那个矩形?

嗯,我猜微软的人有这三种可能性:

1。水平条填充交叉点。

enter image description here

2. 垂直条填充交叉点

enter image description here

3. 或者有一个实心矩形,其颜色与正确的scrollBar相同。

enter image description here

所以,他们决定使用第三种选择。而且正如我所说的,如果没有 更改 滚动条的整体风格,无法更改小细节。也许你可以改变这种风格:http://www.nullskull.com/a/1525/styling-the-wpf-scrollviewer.aspx?:D