2012-04-19 4 views
3

Я делаю приложение для Windows 7, и я вставляю слайдер. Он начинается с 1 и заканчивается на 80. Я хочу, чтобы это было, когда вы останавливаете слайдер, он показывает значение везде, где ползунок находится в текстовом блоке. (например, если кто-то остановится на полпути, текстовый блок скажет 40)Хотите показать значение слайдера в текстовом блоке?

ответ

14

Легче было бы связать свойство ползунки значение для вашего TextBlocks Текст и затем вы будете получать значение обновляется каждый раз, когда он будет изменен. Вы также можете создать конвертер, потому что значение ползунка - это двойное число, а затем с конвертером вы можете преобразовать это значение в Int тоже.

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

Это самое чистое решение. Если десятичные числа раздражают вас, тогда создайте конвертер, чем округлите число. –

+3

@ Kasper: Я думаю, что Binding.StringFormat будет лучше, чем конвертер. –

+1

@ alpha-mouse Никогда не использовал Binding.StringFormat, но если он работает, то это здорово и даже проще, чем конвертер. :) – BigL

3

Просто установите TextBlock.Text с помощью Slider.Value.ToString() в случае, когда вы остановили перетаскивание/изменение слайдера.

Если вы хотите, вы можете также сократить стоимость с Math.Round():

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

С уважением Крис

+1

Это не очень хорошее решение. Он не использует функциональные возможности привязки, предлагаемые XAML. –

0

Вы должны сделать ValueChanged событие для слайдера (что-то вроде этого)

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

} 

Тогда в этом случае, вы можете установить текст в текстовое поле ->

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

Everytime изменения ползунков, срабатывает событие, поэтому изменения TextBox Aswell

надеюсь, что это помогает,

Барта

+0

эй спасибо многому человеку, но я получаю сообщение об ошибке «NullReferenceException был необработанным». Любая идея, что делать? спасибо, – Lavi

+0

Можете ли вы опубликовать часть своего кода, где вы делаете то, что упоминалось выше? –

+0

'private void slider1_ValueChanged (отправитель объекта, RoutedPropertyChangedEventArgs e) { slidertext.Text = slider1.Value.ToString(); } ' – Lavi

0

Ответ «Барт Teunissen» довольно хорошо, но просто добавить простую проверку либо OldValue доступен или нет, то он будет работать идеально.

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

надеюсь, что эта помощь.

Смежные вопросы