Mit*_*tch 5 silverlight wpf slider
我正在使用WPF Slider控件(我猜测Silverlight版本类似),它设置为水平,最小值为0,最大值为5.
我想在刻度线下面显示0到5的值,以使拇指当前指向的值更明显一些.
这是可能的,有没有人设法实现这一目标?
Liz*_*Liz 12
我相信最好的方法是创建一个自定义TickBar控件并覆盖刻度线的渲染.这是一种方式:
public class NumberedTickBar : TickBar
{
protected override void OnRender(DrawingContext dc)
{
Size size = new Size(base.ActualWidth,base.ActualHeight);
int tickCount = (int)((this.Maximum - this.Minimum) / this.TickFrequency) + 1;
if((this.Maximum - this.Minimum) % this.TickFrequency == 0)
tickCount -= 1;
Double tickFrequencySize;
// Calculate tick's setting
tickFrequencySize = (size.Width * this.TickFrequency / (this.Maximum - this.Minimum));
string text = "";
FormattedText formattedText = null;
double num = this.Maximum - this.Minimum;
int i = 0;
// Draw each tick text
for(i = 0;i <= tickCount;i++)
{
text = Convert.ToString(Convert.ToInt32(this.Minimum + this.TickFrequency * i),10);
formattedText = new FormattedText(text,CultureInfo.GetCultureInfo("en-us"),FlowDirection.LeftToRight,new Typeface("Verdana"),8,Brushes.Black);
dc.DrawText(formattedText,new Point((tickFrequencySize * i),30));
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您必须为滑块创建一个自定义样式,该样式使用新的Tickbar而不是默认的标签栏.
如果您不确定如何为滑块创建样式,可以从这里的Windows示例开始. 这是一个非常复杂的.
然后,唯一要做的就是用新的自定义条替换Top Tickbar.基本上改变:
<TickBar Name="TopTick" SnapsToDevicePixels="True" Placement="Top" Fill="{StaticResource GlyphBrush}" Height="4" Visibility="Collapsed" />
Run Code Online (Sandbox Code Playgroud)
对此:
<local:NumberedTickBar Name="TopTick" Margin="5,0,10,0" SnapsToDevicePixels="True" Grid.Row="0" Fill="{TemplateBinding Foreground}" Placement="Top" Height="4" Visibility="Collapsed"/>
Run Code Online (Sandbox Code Playgroud)
保证金很重要,因为这样可以确保您的文本位于正确的位置.
您的滑块将位于顶部,其下方有刻度线.刻度线下方将显示一行文本.
| 归档时间: |
|
| 查看次数: |
9003 次 |
| 最近记录: |