2010-09-01 89 views
4

我想将一个滑块放入一个datagrid单元格,并且该行的高度为20,所以我想让滑块的拇指高度更小比起那个来说。我设置了滑块自身的高度,但拇指似乎被切掉(即,它不缩小到我在slider.height属性中指定的高度)。我不想重写滑块控件的整个控件模板来执行此操作。有一些设置属性或类似的东西的方法。如何设置一个wpf滑块控件的拇指的高度

编辑:即使当我创建一个自定义滑块样式,其中包含我想要的尺寸的自定义滑块样式时,它的尺寸仍然不正确。

任何想法?

回答

0

刚刚看到这个链接 Binding a slider value on the height of its thumb in WPF

可能是这可以帮助你

+0

这是一两件事,我希望我没有做。我认为会有另一种方法来通过设置属性来改变滑块控件的拇指高度,而不是必须通过整个控件模板覆盖过程。 – BrianP 2010-09-01 16:39:04

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

不是很性感,但它的工作原理是当蒙山的Slider.Height/Slider.Width特性相结合的魅力!

+0

如果规模变化不是太大(0.6-1.4或类似的东西),这将是最常见的,非常简单的解决方案。 – phil13131 2013-08-26 12:48:16

1

设置拇指风格:

<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>