2014-01-16 9 views
0

코드 뒤에 값을 설정하려는 내 페이지에 TextBlock 컨트롤이 있지만 NullReferenceException이 표시됩니다. TextBlock의 값은 슬라이더 컨트롤의 현재 위치에 따라 변경됩니다. 오류가 발생하면 페이지가 완전히 NavigatedTo가되지 않습니다. 나는이 문제를 해결하기 위해 내가 할 수있는 일이 무엇인지 모르겠다.코드 뒤에 TextBlock 텍스트를 설정하면 NullReferenceException이 발생합니다.

XAML

<TextBlock x:Name="OpacityNumberTextBlock" HorizontalAlignment="Center"> 
<Slider x:Name="MenuOpacitySlider" Minimum="1" Maximum="6" Margin="12,20,12,0" 
        ValueChanged="MenuOpacitySlider_ValueChanged" Value="1"/> 

코드

public void MenuOpacitySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 
     Slider slider = sender as Slider; 

     //Round the value so it is a whole number even when the slider is dragged 
     slider.Value = Math.Round(slider.Value); 

     num = (int)slider.Value; 

     switch (num) 
     { 
      case 1: 
       OpacityNumberTextBlock.Text = "1"; //NullReferenceException 
       break; 
      .. 
     } 
    } 
+0

은 어쩌면 당신은() InitializeComponent를 이전의 valueChanged에 가입하려고? – Romasz

+0

@Matthew, 슬라이더 값이 '1'과 정말로 같습니다? 스위치 케이스 시나리오의 기본 동작은 무엇입니까? – Olter

+0

방금 ​​슬라이더 컨트롤을 원래 게시물의 편집 내용으로 추가했습니다. 실제로 총 6 건의 사례가 있는데 첫 번째 사례에서 멈 춥니 다. – Matthew

답변

1

귀하의 ValueChanged 뒤에는 TextBlock가 null 동안 InitializeComponent()에 발생합니다. InitializeComponent() 후 구독 : XAML에서

:

<TextBlock x:Name="OpacityNumberTextBlock" HorizontalAlignment="Center"/> 
<Slider x:Name="MenuOpacitySlider" Minimum="1" Maximum="6" Margin="12,20,12,0" Value="1"/> 

을 코드에서 뒤에 :

public MainPage() 
{ 
    InitializeComponent(); 
    MenuOpacitySlider.ValueChanged+=MenuOpacitySlider_ValueChanged; 
} 
+0

좋습니다. 시도해 보겠습니다. XAML에서도 제거해야합니까? – Matthew

+1

@Matthew 예 - xaml의 Slider에서 구독을 제거합니다 (위 코드 에서처럼). – Romasz