【问题标题】:How to create slider ticks in silverlight using c#如何使用 C# 在 Silverlight 中创建滑块刻度
【发布时间】:2014-05-19 12:03:16
【问题描述】:

我是一名 C# Silverlight 5 初学者,我遇到了一种情况,我必须只使用 C# 代码(而不是 xaml)来创建一个滑块。

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

我想要的是这样的图形用户界面:

目前我有这个 GUI:

所以我必须在开始和结束时添加 -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) 滑块刻度?

(2) -2 0 和 2 在给定的 GUI 中?

(3) 如何将数据显示为四舍五入(因为现在它以 0.555797478 的形式显示;我的意思是非常 monng 但我希望它为 0.6 而不是这个很长的值)?

会有很大帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 没有xaml吗?你知道我只需要用 c# 编写代码。
    • 它使用了一个名为 CustomSlider 的类来扩展 Slider,它只是一个 .cs
    • 谢谢 好的,让我应用它。如果有效,很快就会来标记您的答案。
    • 问题是它使用我无法使用的 GUI 的 xaml 代码。我只需要用 c# 编写代码
    • 只需使用您不需要任何 xaml 的 CustomSlider 类
    【解决方案2】:

    这样做有什么问题?

    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);
        }
    

    我忽略了什么?

    【讨论】:

    • 错误:“System.Windows.Controls.Slider”不包含“TickPlacement”的定义,并且没有扩展方法“TickPlacement”接受“System.Windows.Controls.Slider”类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?:ITS A SILVERLIGHT( APPLICATION
    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2019-05-15
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多