Dot-Net
如何使用字元串值代替 WPF Tickbar 上的刻度?
我希望自定義基本 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)); } } }