2012-04-19 18 views

答えて

14

最も簡単には、あなたのテキストブロックのテキストにスライダー値プロパティをバインドすることですプロパティが変更されるたびに更新されます。スライダの値が2倍であるため、コンバーターを作成することもできます。コンバータでこの値をIntに変換することもできます。

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

これは最もクリーンなソリューションです。 10進数が厄介な場合は、数値を四捨五入するよりもコンバーターを作成してください。 –

+3

@ Kasper:Binding.StringFormatはここのコンバーターより優れていると思います。 –

+1

@ alpha-mouse Binding.StringFormatを使用したことはありませんが、それがうまくいくならば、それは変換器としては素晴らしいことです。 :) – BigL

3

スライダーのドラッグ/ストップを停止した後に発生したイベントのSlider.Value.ToString()でTextBlock.Textを設定するだけです。あなたがしたい場合

は、あなたも恐らくMath.round()で値短縮することができます:あなたがスライダーのためにValueChangedイベントをしなければならない

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

よろしく クリス

+1

これは特に良い解決策ではありません。 XAMLが提供するバインディング機能を利用していません。 –

0

を(このようなもの)

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

} 

次にそのイベントでは、あなたがテキストボックスのテキストを設定することができます - >

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

毎回スライダーの変化、イベントが発生するので、このことができます

希望aswellテキストボックスの変更、

BART

+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(); 
    } 
} 

このヘルプを参考にしてください。

関連する問題