使用TextBox在WPF滑块上渲染刻度数字

时间:2014-10-08 09:32:42

标签: c# wpf xaml slider

早先有几个问题涉及在WPF Slider上添加数字值(例如herehere)。到目前为止,我发现的所有提议的解决方案都是从继承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或其他东西中,这可以动态更新其样式和字体等等。

是否可以在SliderTickBar子类中以这种方式添加文本框?

1 个答案:

答案 0 :(得分:0)

开箱即用的解决方案 -

在滑块上方放置画布。滑块值更改时,获得值/(max-min)

的比率

使用相同的比率使用SetLeft或Render Transform将文本块放置在画布中。