2011-12-03 2 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 '텍스트를 변경하십시오.

위 코드는 "객체 참조가 객체의 인스턴스로 설정되지 않았습니다."라는 예외를 throw합니다.

그러나 XAML에서 "값"과 "최소"값을 모두 변경하면 정상적으로 작동합니다. 그것은 내가 0에서 시작하지 못하게하는 것입니다. 정말 이상합니다. 어떤 도움이 필요합니까? 내가 제공하는 스택 추적에 보면, nullexception의 만 가능한 이유는 날 것으로 보인다

+0

정확히 어떤 코드 줄에서 예외가 발생합니까? 페이지 생성 중 또는 코드 생성 중입니까? 스택 트레이스를 보여줄 수 있습니까? 건배! –

+0

tickCounter.Content = value.ToString();에서 발생합니다. 선. –

+0

http://pastie.org/2958483 –

답변

2

는 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"} /> 
관련 문제