2011-12-03 8 views
0

コード:このWPFスライダが例外をスローするのはなぜですか?

private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
     { 
      updateTickCounter(slider1.Value); 
     } 

     private void updateTickCounter(double value) 
     { 
      tickCounter.Content = value.ToString(); 
     } 

XAML:

<Slider Height="32" HorizontalAlignment="Right" Margin="0,21,61,0" Name="slider1" VerticalAlignment="Top" Width="200" IsSnapToTickEnabled="True" Orientation="Horizontal" TickFrequency="1" TickPlacement="BottomRight" Value="1" Minimum="1" Maximum="10" ValueChanged="slider1_ValueChanged" /> 

私は10のうち、値が1で、スライダーが、私は「と呼ばれるラベルをしたい移動するたびに開始し、スライダーを持ってしようとしているtickCounter 'を押してテキストを変更します。

上記のコードでは、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されたときに例外がスローされます。

ただし、XAMLで「値」と「最小値」の両方の値を変更すると正常に動作します。あたかもゼロから始めることができないかのようです。本当に変だ。どんな助け?

+0

例外的にどのコード行で見つかるのですか?それはコードの中にあるのか、ページ生成の間にあるのでしょうか?スタックトレースを表示できますか?乾杯! –

+0

tickCounter.Content = value.ToString();で発生します。ライン。 –

+0

http://pastie.org/2958483 –

答えて

2

私が提供するスタックトレースに見える場合は、nullexceptionの唯一の可能な理由は、私には思えるがtickCounter == nullの

+1

はい、おそらく、スライダがラベルよりも前に初期化されているため、イベントが発生し、ラベルが表示されないためです。 –

2

ではなくラベルを更新するためにイベントを使用しては、DataBindingを使用することです。あなたはTextBlock使うべきLabelの追加的な能力のいずれかを必要としない場合にも

<Slider Name="slider1" IsSnapToTickEnabled="True" Orientation="Horizontal" Value="1" Minimum="1" Maximum="10" /> 

<Label Name="tickCounter" Content="{Binding Path=Value, ElementName=slider1"} /> 

、。

<TextBlock Name="tickCounter" Text="{Binding Path=Value, ElementName=slider1"} /> 
関連する問題