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