【问题标题】:How to disable drag thumb on a ScrollBar in WPF?如何在 WPF 中的 ScrollBar 上禁用拖动拇指?
【发布时间】:2009-11-30 08:46:04
【问题描述】:

两个问题:

  1. 如何在 WPF 中禁用滚动条上的拖动拇指?
  2. 有没有办法限制拖动拇指的位置?比如 LargeChange 还是 SmallChange?

【问题讨论】:

    标签: wpf scrollbar drag


    【解决方案1】:
    1. 编辑ScrollBar控件的模板,将Thumb的IsEnabled属性设置为false

    2. 不确定是否可以直接从代码或 XAML 执行此操作,但您可以将 2 个新 DP 添加到继承 ScrollBar 类的控件,然后更改模板以具有此新功能

    【讨论】:

    • 如何编辑ScrollBar的模板?并更改其 IsEnable 属性?
    【解决方案2】:

    也许它对某人有用 如果您想通过两种方式禁用拖动拇指:

    1. 为滚动条重写控件
    2. 在控件模板中不要重写拇指,只需使用矩形或将其留空

    示例:

     <Style TargetType="{x:Type ScrollBar}">
                    <Setter Property="Background" Value="{StaticResource BackgroundColor}"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ScrollBar}">
                                <Grid x:Name="Bg" SnapsToDevicePixels="true">
                                    <Grid.RowDefinitions>
                                        <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
                                        <RowDefinition Height="0.00001*"/>
                                        <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
                                    </Grid.RowDefinitions>
                                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Row="1" />
                                    <RepeatButton Grid.Row="0" Command="ScrollBar.PageUpCommand" Style="{StaticResource ScrollBarButton}" Content="M 0 4 L 8 4 L 4 0 Z"/>
                                    <Rectangle Grid.Row="1" VerticalAlignment="Top" x:Name="ThumbReplacer" Fill="{DynamicResource ScrollColor}"/>
                                    <RepeatButton Grid.Row="2" Command="ScrollBar.PageDownCommand" Style="{StaticResource ScrollBarButton}" Content="M 0 0 L 4 4 L 8 0 Z"/>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
    

    【讨论】:

      猜你喜欢
      • 2015-10-12
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      相关资源
      最近更新 更多