【问题标题】:ScrollViewer width to be narrowerScrollViewer 宽度变窄
【发布时间】:2019-10-17 14:13:10
【问题描述】:

我想覆盖 WPF 中 ScrollViewer 的滚动条的宽度。我设法加宽了它的宽度,但是当我试图让它更苗条时,它没有用。似乎它有一个不能被覆盖的最小宽度。下面是我的代码。

为什么下面的代码不能让滚动条的宽度变细?

谢谢

           <ScrollViewer.Resources>
                <Style TargetType="ScrollBar">
                    <Style.Triggers>
                        <Trigger Property="Orientation" Value="Vertical">
                            <Setter Property="Width" Value="20"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ScrollViewer.Resources>

【问题讨论】:

标签: wpf xaml scrollviewer


【解决方案1】:

您需要编辑模板。

将编辑器光标放在ScrollViewer标签内,然后在属性窗口中转到“杂项->模板”,单击右侧的小矩形并从弹出菜单中选择“转换为新资源”:

这将创建一个新模板,其中包含一个名为PART_VerticalScrollBar 的滚动条。将光标放在该滚动条标签上并重复上述操作以将其模板化,这将创建一个如下所示的控件模板:

    <ControlTemplate x:Key="ScrollBarControlTemplate1" TargetType="{x:Type ScrollBar}">
        <Grid x:Name="Bg" SnapsToDevicePixels="True">
            <Grid.RowDefinitions>
                <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>

现在设置 MaxWidth=10(或该 Grid 元素上的任何内容)。

您可能遇到的唯一另一个问题是,如果您将其设置得太小,则滚动条按钮上的向上/向下箭头可能会消失,这是因为它们的默认模板在其路径周围放置了一个边距:

<Path x:Name="ArrowTop" Data="M0,4C0,4 ..etc ... " Fill="#FF606060" Margin="3,4,3,3" Stretch="Uniform"/>

这可以通过删除该边距设置和/或用其他东西完全替换路径来轻松解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 2020-09-24
    相关资源
    最近更新 更多