0

我需要扩展一个滑块拇指以使其脱离其控制。那有可能吗?如果不是我怎么能做到这一点?请帮忙。

例如,我的滑块高度为 50,但拇指必须在控件外开始 -50px 并且高度为 100。

这里黄色是滑块控件,红色是拇指现在我需要拇指扩展将橙色部分添加到同一个拇指。

谢谢

4

3 回答 3

1

如果您可以使用 WPF 控件构建 UI,那么您可以定义一个新的ControlTemplate……它确实没有什么不同。以下是如何...始终从实现默认值开始,ControlTemplate以便您的对象最初看起来“正常”。然后只需找到您要更改的部分...并更改它:

在此处输入图像描述

这个的诀窍是Thumb不会超出控制,而是整个控制被放大现在默认ControlTemplate值太大了,我不打算在此处添加所有 XAML。从@VimalCK 添加链接的默认链接开始(不要忘记包含Resources),然后添加这些更改(希望我已经记住了我所做的所有更改:

    <Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}">
        <Setter Property="SnapsToDevicePixels" Value="true" />
        <Setter Property="OverridesDefaultStyle" Value="true" />
        <Setter Property="Height" Value="200" />
        <Setter Property="Width" Value="14" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Thumb}">
                    <Grid>
                        <Ellipse x:Name="Ellipse" StrokeThickness="1" Height="14" 
                            VerticalAlignment="Bottom">
                            ...  <!--Use default XAML here-->
                        </Ellipse>
                        <Rectangle Height="200" Width="2" Stroke="Red" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

然后在内部HorizontalSlider ControlTemplate,将TrackBackground Border定义更改为:

<Border x:Name="TrackBackground" VerticalAlignment="Bottom" Margin="0,0,0,5" 
    CornerRadius="2" Height="4" Grid.Row="1" BorderThickness="1">
    ...  <!--Use default XAML here-->
</Border>

然后像这样使用它Height

<Slider Height="210" Maximum="100" Minimum="0" TickPlacement="BottomRight"
VerticalAlignment="Bottom" />

我想我记录了我所做的所有更改……如果没有,您可能需要在某事上设置 aHeight或 a VerticalAlignmentto Bottom……无论哪种方式,只要进行试验,直到获得您想要的。探索如何ControlTemplate定义 default 是学习 WPF 的好方法。

于 2013-11-05T10:07:24.633 回答
0

用 Canvas Control 包裹拇指并像这样设置 ClipToBOunds="False"

 <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}">
                     <Canvas>
                         <Border Width="16" Height="16" Canvas.Top="-3" ClipToBounds="False" Background="Black" />
                     </Canvas>
                  </ControlTemplate>
             </Setter.Value>
         </Setter>
     </Style>
于 2014-06-10T09:42:03.357 回答
0

Microsoft 提供的 WPF 控件具有默认样式和模板,可在 MSDN 中找到,您可以根据自己的要求进行修改。对于滑块控件样式和模板,请访问以下链接

http://msdn.microsoft.com/en-us/library/ms753256(v=vs.110).aspx

于 2013-11-05T06:06:15.827 回答