3
以前有幾個問題涉及將數值添加到WPF Slider
(例如here和here)上的刻度線。到目前爲止,我發現的所有建議的解決方案都是繼承TickBar
類,然後使用DrawText(FormattedText text, Point point)
來繪製該值。喜歡的東西:使用TextBox渲染WPF滑塊上的刻度線
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
子類中以這種方式添加文本框?
如果你爲它提供了一個新的ControlTemplate,你可以添加你喜歡的任何東西。 – Sheridan 2014-10-08 09:40:34
不幸的是'TickBar'不是一個控件,所以我們不能使用任何模板。除非您修改Slider本身的模板,並將TickBar替換爲您的自定義TickBar。 – 2014-10-08 10:27:20
這似乎正是問題所在:我無法爲「TickBar」製作控制模板。 @KingKing:你知道一個例子,你做了什麼嗎?原因我找不到任何示例或解釋如何修改「TickBar」的模板,更不用說如何修改勾號以便它們顯示在文本框中。 – Yellow 2014-10-09 10:18:42