2012-04-19 31 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(); 
    } 
} 

希望得到這個幫助。