如何在 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="&#x25BC;" TextAlignment="Left"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Left" Margin="7,0,0,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Left" Margin="13,0,0,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Left" Margin="20,0,0,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Left" Margin="24,0,0,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Center"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Right" Margin="0,0,24,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Right" Margin="0,0,20,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Right" Margin="0,0,13,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Right" Margin="0,0,7,0"/>
    <TextBlock Text="&#x25BC;" TextAlignment="Right"/>
</UniformGrid>

文本用于向下箭头。你可以找到其他箭头here。

第一个、中间和最后一个文本块将与刻度线的正常位置对齐。其余的将需要偏移量,这就是边距的用途。它们在每一侧都是相等的,但请注意,除非您知道控件不会改变大小,否则硬编码这些是不合理的。如果控件改变大小,您将不得不做一些数学运算来动态生成字体和边距。

我更改了前景色和背景色以获得更好的可见性,但你最终应该得到这样的结果。

【讨论】:

我会试试你的解决方案,它看起来很有趣..谢谢!

以上是关于如何在 WPF C# 中更改滑块上刻度的设计(刻度的厚度、刻度的形状等)的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 滑块上,我可以单击刻度上的任意位置还是必须拖动滑块旋钮?

更改刻度线和滑块控件以显示较小的数字

将 UIImage 作为“刻度线”添加到 UISlider

C# wpf 如何实现自定义控件,布局时,大小发生变化,内部绘制的曲线跟随变化?

JavaFX - 更改特定于滑块的颜色

向 jQuery 滑块添加刻度线? [复制]