如何在 WPF C# 中更改滑块上刻度的设计(刻度的厚度、刻度的形状等)
Posted
技术标签:
【中文标题】如何在 WPF C# 中更改滑块上刻度的设计(刻度的厚度、刻度的形状等)【英文标题】:How to change the design (thickness of tick, the shape of a tick, etc...) of ticks on a slider in WPF C# 【发布时间】:2019-05-30 02:10:38 【问题描述】:我想更改 WPF 中滑块下方的刻度线的粗细和刻度线的形状(箭头形状等...)。我到处都看过。我发现的只是如何改变刻度的高度和颜色。
【问题讨论】:
你能提供你想要的刻度吗? 箭头形状会很棒? 删除无用标签 使用 blend 获取滑块的模板,然后进行相应的修改。 Telerik 控件允许您为滑块的所有部分提供自定义样式。如果您正在使用这些,请查看 Telerik 帮助页面。 【参考方案1】:不是一个很好的解决方案,但您可以制作一个自定义模板,然后添加一个包含所需项目的 UniformGrid。
要添加自定义模板,请将滑块添加到您的 xaml。假设您使用的是 Visual Studio,您可以转到 Properties Window 并在 Miscellaneous 部分下转到 Templates -> 转换为新资源。
从这里您将能够对默认模板进行更改。
在 TickBars 下方,我添加了一个 UniformGrid。您可以删除 TickBars,但我将它们留作下图中的比较显示。
<UniformGrid Columns="11">
<TextBlock Text="▼" TextAlignment="Left"/>
<TextBlock Text="▼" TextAlignment="Left" Margin="7,0,0,0"/>
<TextBlock Text="▼" TextAlignment="Left" Margin="13,0,0,0"/>
<TextBlock Text="▼" TextAlignment="Left" Margin="20,0,0,0"/>
<TextBlock Text="▼" TextAlignment="Left" Margin="24,0,0,0"/>
<TextBlock Text="▼" TextAlignment="Center"/>
<TextBlock Text="▼" TextAlignment="Right" Margin="0,0,24,0"/>
<TextBlock Text="▼" TextAlignment="Right" Margin="0,0,20,0"/>
<TextBlock Text="▼" TextAlignment="Right" Margin="0,0,13,0"/>
<TextBlock Text="▼" TextAlignment="Right" Margin="0,0,7,0"/>
<TextBlock Text="▼" TextAlignment="Right"/>
</UniformGrid>
文本用于向下箭头。你可以找到其他箭头here。
第一个、中间和最后一个文本块将与刻度线的正常位置对齐。其余的将需要偏移量,这就是边距的用途。它们在每一侧都是相等的,但请注意,除非您知道控件不会改变大小,否则硬编码这些是不合理的。如果控件改变大小,您将不得不做一些数学运算来动态生成字体和边距。
我更改了前景色和背景色以获得更好的可见性,但你最终应该得到这样的结果。
【讨论】:
我会试试你的解决方案,它看起来很有趣..谢谢!以上是关于如何在 WPF C# 中更改滑块上刻度的设计(刻度的厚度、刻度的形状等)的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 滑块上,我可以单击刻度上的任意位置还是必须拖动滑块旋钮?