Dot-Net

如何使用字元串值代替 WPF Tickbar 上的刻度?

  • January 3, 2017

我希望自定義基本 WPF 的外觀TickBar。我想知道是否有一種簡單的方法可以使用控制模板來做到這一點:

我希望用數字代替刻度條上的刻度。我希望數字的位置與滑塊的值相對應(很像連結中的圖片)。

我四處搜尋,發現一個建議是創建一個繼承TickBar並覆蓋它的OnRender方法的類。

我寧願找到一個不涉及的解決方案。我真的希望使用控制模板可以解決問題。因此,如果有這樣的解決方案,我們將不勝感激!:)

好的,我有一個解決方案。我想我應該回答我的問題,以防其他一些人遇到和我一樣的情況。:-)

覆蓋OnRender似乎是最明顯的解決方案。我真的希望使用某種模板……嘆息……啊。無論如何,我在 MSDN 的論壇上遇到了這個討論,它提供了一個答案,讓我朝著正確的方向前進。

很簡單,它需要幾個星期才能使它更靈活,所以這是我的版本:

class CustomTickBar : TickBar
{
   protected override void OnRender(System.Windows.Media.DrawingContext dc)
   {
       double num = this.Maximum - this.Minimum;
       double y = this.ReservedSpace * 0.5;
       FormattedText formattedText = null;
       double x = 0;
       for(double i = 0; i <= num; i += this.TickFrequency)
       {
           formattedText = new FormattedText(i.ToString(), FlowDirection.LeftToRight, 
               new Typeface("Verdana"), 8, Brushes.Black);
           if(this.Minimum == i)
               x = 0;
           else
               x += this.ActualWidth / (num / this.TickFrequency) ;
           dc.DrawText(formattedText, new Point(x, 10)); 
       }
   }
}

引用自:https://stackoverflow.com/questions/3577574