2012-04-19 71 views
3

我正在做一个Windows Phone 7应用程序,我把它放在一个滑块。它从1开始到80结束。我希望在停止滑块时显示滑块位于文本块中的任何位置的值。 (就像有人半途停下,文本块会说40)想要在文本块中显示滑块的值?

回答

14

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

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

这是最干净的解决方案。如果小数惹恼了你,那么就创建一个转换器而不是整数。 – 2012-04-19 10:08:17

+3

@Kasper:我认为Binding.StringFormat在这里比转换器更好。 – 2012-04-19 10:11:38

+1

@ alpha-mouse从来没有使用过Binding.StringFormat,但如果它能够正常工作,那么它很棒,甚至比转换器更容易。 :) – BigL 2012-04-19 11:17:33

3

只需在停止拖动/更改滑块后激发的事件中设置TextBlock.Text和Slider.Value.ToString()。

如果你愿意,你也可以缩短与Math.Round()值:

TextBlock.Text = Math.Round(Slider.Value, [Number of Decimals]).ToString() 

问候 克里斯

+1

这不是一个特别好的解决方案。它没有利用XAML提供的绑定功能。 – 2012-04-19 10:09:14

0

你必须要为滑块的ValueChanged事件(像这样)

private void ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 

} 

然后,在这种情况下,您可以设置文本框的文本 - >

textbox1.Text = silder1.Value.ToString(); 

每次滑块的变化,事件触发,使藏汉

希望这有助于文本框的变化,

巴特

+0

嘿感谢很多人,但我得到的错误“NullReferenceException是未处理的”。任何想法该怎么办?谢谢, – Lavi 2012-04-19 09:49:07

+0

你可以发布一段代码,你在哪里做上述的事情? – 2012-04-19 09:50:25

+0

'private void slider1_ValueChanged(object sender,RoutedPropertyChangedEventArgs e) { slidertext.Text = slider1.Value.ToString(); }' – Lavi 2012-04-19 09:55:58

0

的“巴特Teunissen的回答是不错,但只是增加一个简单的检查的OldValue要么是可用,那么它会工作完美。

private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 
    if(slider.OldValue != null) 
    { 
     textbox1.Text = silder1.Value.ToString(); 
    } 
} 

希望得到这个帮助。