早先有几个问题涉及在WPF Slider
上添加数字值(例如here和here)。到目前为止,我发现的所有提议的解决方案都是从继承TickBar
类,然后使用DrawText(FormattedText text, Point point)
绘制值。类似的东西:
protected override void OnRender(DrawingContext dc)
{
foreach(double tick in Ticks)
{
formattedText = new FormattedText(Convert.ToString(tick),
CultureInfo.GetCultureInfo("en-us"),
FlowDirection.LeftToRight,
new Typeface("Verdana"), // I don't know why all examples use the Verdana font :P
10, Brushes.Black);
dc.DrawText(formattedText, ComputeTheRightPosition(tick));
}
}
虽然这是一个有效的解决方案,但由于FormattedText
,我发现它对我来说不够通用。在我的应用程序中,Style
可以在运行时更改,所以我更喜欢将所有数字放在TextBlock
或其他东西中,这可以动态更新其样式和字体等等。
是否可以在Slider
或TickBar
子类中以这种方式添加文本框?
答案 0 :(得分:0)
开箱即用的解决方案 -
在滑块上方放置画布。滑块值更改时,获得值/(max-min)
的比率使用相同的比率使用SetLeft或Render Transform将文本块放置在画布中。