Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要在textblock中显示滑块的值吗?_C#_Silverlight_Windows Phone 7 - Fatal编程技术网

C# 要在textblock中显示滑块的值吗?

C# 要在textblock中显示滑块的值吗?,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我正在制作一个WindowsPhone7应用程序,并加入了一个滑块。它从1开始,到80结束。我想让它这样当你停止滑块时,它会显示滑块在文本块中的任何位置的值。(例如,如果有人中途停止,textblock会显示40)只要在停止拖动/更改滑块后触发的事件中使用Slider.Value.ToString()设置textblock.Text即可 如果需要,还可以使用Math.Round()缩短值: 问候 Chris您必须为滑块创建一个valuechanged事件(类似于此) 每次滑块更改时,事件都会触发

我正在制作一个WindowsPhone7应用程序,并加入了一个滑块。它从1开始,到80结束。我想让它这样当你停止滑块时,它会显示滑块在文本块中的任何位置的值。(例如,如果有人中途停止,textblock会显示40)

只要在停止拖动/更改滑块后触发的事件中使用Slider.Value.ToString()设置textblock.Text即可

如果需要,还可以使用Math.Round()缩短值:

问候
Chris

您必须为滑块创建一个valuechanged事件(类似于此)

每次滑块更改时,事件都会触发,因此文本框也会更改

希望这有帮助


bart

最简单的方法是将滑块值属性绑定到Textblocks文本属性,然后每次更改时都会更新该值。您也可以创建一个转换器,因为滑块值是双精度的,然后使用转换器,您也可以将该值转换为Int

Text="{Binding ElementName=YourSlider,Path=Value}"

“Bart Teunissen”的答案很好,但只需添加一个简单的检查,要么OldValue可用,要么不可用,那么它就会完美工作

private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
   if(slider.OldValue != null)
   {
      textbox1.Text = silder1.Value.ToString();
   }
}
private void slider\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
如果(slider.OldValue!=null)
{
textbox1.Text=silder1.Value.ToString();
}
}

希望能有所帮助。

嘿,非常感谢,伙计,但我收到错误“NullReferenceException未处理”。知道怎么办吗?谢谢,您可以在上面提到的地方发布一段代码吗?
private void slider1_ValueChanged(object sender,routedproperty changedeventargs e){slidertext.Text=slider1.Value.ToString();}
slidertext.Text=slider1.Value.ToString();你也应该看看比格尔给出的答案,因为这个答案实际上比我自己的好。因为它利用了绑定系统。如果你想继续我的回答,我建议你做一个Debug.Writeline(slider1.Value.ToString()),看看这是否会产生你在滑块中的值。这是最干净的解决方案。如果十进制数字令您烦恼,则创建一个转换器,而不是将数字四舍五入。@Kasper:我认为Binding.StringFormat将比这里的转换器更好。@alpha mouse从未使用Binding.StringFormat,但如果它能工作,则比转换器更好、更容易。:)这不是一个特别好的解决方案。它没有利用XAML提供的绑定功能。
textbox1.Text = silder1.Value.ToString();
Text="{Binding ElementName=YourSlider,Path=Value}"
private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
   if(slider.OldValue != null)
   {
      textbox1.Text = silder1.Value.ToString();
   }
}