我需要扩展一个滑块拇指以使其脱离其控制。那有可能吗?如果不是我怎么能做到这一点?请帮忙。
例如,我的滑块高度为 50,但拇指必须在控件外开始 -50px 并且高度为 100。
这里黄色是滑块控件,红色是拇指现在我需要拇指扩展将橙色部分添加到同一个拇指。
谢谢
如果您可以使用 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 VerticalAlignment
to Bottom
……无论哪种方式,只要进行试验,直到获得您想要的。探索如何ControlTemplate
定义 default 是学习 WPF 的好方法。
用 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>
Microsoft 提供的 WPF 控件具有默认样式和模板,可在 MSDN 中找到,您可以根据自己的要求进行修改。对于滑块控件样式和模板,请访问以下链接
http://msdn.microsoft.com/en-us/library/ms753256(v=vs.110).aspx