2010-09-01 32 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>