Ash*_*non 10 .net wpf slider wpf-controls
我希望自定义基本WPF的外观TickBar.我想知道是否有一种简单的方法可以使用控件模板:
我希望用数字代替刻度线上的刻度.我希望数字的位置对应于滑块的值(很像链接中的图片).
我已经搜索了一个建议,我发现创建了一个继承自TickBar并覆盖它的OnRender方法的类.
我更愿意找到一个不涉及这个问题的解决方案.我真的希望使用控件模板来做到这一点.所以,如果有一个这样的解决方案,建议将不胜感激!:)
Ash*_*non 16
好的,我有一个解决方案.我想我应该回答我的问题,因为沿线的其他一些人遇到了与我相同的情况.:-)
覆盖OnRender似乎是最明显的解决方案.我真的希望使用各种各样的模板...... 叹息 ......好啊.无论如何,我在MSDN的论坛上遇到了这个讨论,它提供了一个答案,让我朝着正确的方向前进.
简单,它需要一些tweeks来使它更灵活,所以这是我的版本:
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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7528 次 |
| 最近记录: |