如何使用c#在silverlight中创建滑块刻度

时间:2014-05-19 12:03:17

标签: c# .net silverlight slider silverlight-5.0

我是C#Silverlight 5初学者,我有一种情况,我只需要使用C#代码(而不是xaml)创建一个滑块。

我能够成功显示滑块,但问题Silverlight没有任何轻微的刻度管理。

我想要的是这样的GUI:

enter image description here

目前我有这个GUI:

enter image description here

所以我必须在开始和结束时添加-2和2,我还必须添加刻度线。

但我无法在Silverlight 5中找到解决方法。

我当前的代码看起来像这样:

Slider slider1 = new Slider();
TextBox txtblk6 = new TextBox(); 

private static Grid GenertateSlider(ViewModel.XmlParameterClasses.Parameter param, int LoopCount)
{
    // Create a new slider and add a ValueChanged event handler.        
    slider1.Orientation = Orientation.Horizontal;
    slider1.Width = 100;
    slider1.Maximum = param.Component.Attributes.Max; //It is the Maximum value (-2 in my case)
    slider1.Minimum = param.Component.Attributes.Min;//(-1 in my case)
  // slider1
    Grid.SetColumn(txtblk6, 2);
    Grid.SetRow(txtblk6, LoopCount); //Here LoopCount is to decide the row number and is passed through function call.
    g.Children.Add(txtblk6);

    txtblk6.Text = slider1.Value.ToString() + " Pips";
    slider1.ValueChanged += Slider_ValueChanged1;
    Grid.SetColumn(slider1, 1);
    Grid.SetRow(slider1, LoopCount);
    g.Children.Add(slider1);
    return (g);
}

private void Slider_ValueChanged1(object sender, RoutedPropertyChangedEventArgs<double> e)
       {
           // Add code to perform some action here.
           txtblk6.Text = slider1.Value.ToString() + " Pips";
       }

有人可以告诉我如何添加?

(1)Slider Ticks?

(2)-2 0和2,如给定的GUI?

(3)如何显示只显示数据四舍五入(因为现在它显示为0.555797478;我的意思是非常monng但我想要它为0.6而不是这个非常长的值)?

将是一个很大的帮助。

2 个答案:

答案 0 :(得分:1)

您会找到一个带刻度值here的滑块示例。

It's pretty old but it might do the trick for you.

答案 1 :(得分:0)

这样做有什么不对?

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
    {
        Grid g = new Grid();
        g.HorizontalAlignment = HorizontalAlignment.Stretch;
        g.VerticalAlignment = VerticalAlignment.Center;
        g.Height = 68;
        g.RowDefinitions.Add(new RowDefinition());
        g.RowDefinitions.Add(new RowDefinition());

        Slider slider = new Slider();
        slider.TickPlacement = TickPlacement.Both;
        slider.Maximum = 2.0;
        slider.Minimum = -2.0;
        slider.TickFrequency = 0.5;
        slider.Height = 40;
        slider.HorizontalAlignment = HorizontalAlignment.Stretch;
        Grid.SetRow(slider, 0);
        g.Children.Add(slider);

        TextBlock t1 = new TextBlock();
        t1.Height = 28;
        t1.HorizontalAlignment = HorizontalAlignment.Left;
        t1.Text = "-2";
        Grid.SetRow(t1, 1);
        g.Children.Add(t1);

        TextBlock t2 = new TextBlock();
        t2.Height = 28;
        t2.HorizontalAlignment = HorizontalAlignment.Center;
        t2.Text = "0";
        Grid.SetRow(t2, 1);
        g.Children.Add(t2);

        TextBlock t3 = new TextBlock();
        t3.Height = 28;
        t3.HorizontalAlignment = HorizontalAlignment.Right;
        t3.Text = "2";
        Grid.SetRow(t3, 1);
        g.Children.Add(t3);

        theGrid.Children.Add(g);
    }

我忽略了什么?