如何设置WPF滑块控件拇指的高度?

6
我想在一个数据网格单元格中放置一个滑块,该行的高度为20,因此我想让滑块的拇指高度小于它。我设置了滑块本身的高度,但是拇指似乎被切掉了(即它不会按照我在slider.height属性中指定的高度进行缩放)。我不想覆盖整个滑块控件的控件模板来完成这个操作。肯定有一些设置属性或类似的东西的方法。
编辑:即使我创建了包含所需大小的自定义拇指样式的自定义滑块样式,它仍然无法正确调整大小。
有什么想法吗?
2个回答

13
<Slider.LayoutTransform>
    <ScaleTransform ScaleY="0.9" CenterX="15" CenterY="15"/>
</Slider.LayoutTransform>

虽然不够吸引人,但是当和Slider.Height/Slider.Width属性结合使用时它非常有效!


1
如果比例尺的变化不是太大(例如0.6-1.4之类的),那么这将是一个非常好且易于实现的解决方案,而这种情况也是最为普遍的。 - philkark
1
哈哈哈哈!谢谢!它也适用于UWP <Slider.RenderTransform> <ScaleTransform ScaleY="0.5" CenterX="0" CenterY="7"/> </Slider.RenderTransform> - NoWar

2

设置缩略图样式:

<Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Thumb}">
                <!--<Ellipse 
                      Name="Ellipse" 
                      Fill="Yellow"
                      Stroke="Yellow" 
                      Height="10"
                      Width="{Binding Path=ThumbWidth, RelativeSource={RelativeSource TemplatedParent}}"
                      StrokeThickness="1" />-->
                <Rectangle 
                    Fill="Azure"
                    Stroke="Azure"
                    Height="7"
                    Width="{Binding Path=ThumbWidth, RelativeSource={RelativeSource TemplatedParent}}"
                    StrokeThickness="1"
                    Margin="0.1,.1,.1,.1"/>

            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后使用这个样式滑块自定义控件。
<Style TargetType="{x:Type local:NvSliderControl}">
    <Setter Property="Orientation" Value="Vertical" />
    <Setter Property="Height" Value="50"/>        
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:NvSliderControl}">
                <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                    <Grid>
                        <Track x:Name="PART_Track" >
                            <Track.Thumb>
                                <Thumb Style="{StaticResource SliderThumbStyle}">
                                </Thumb>
                            </Track.Thumb>
                        </Track>
                    </Grid>
                </Border>
                <ControlTemplate.Triggers>

                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

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