2014-01-16 52 views
0

我在我的頁面上有一個TextBlock控件,我想在後面設置代碼中的值,但我得到一個NullReferenceException。 TextBlock的值根據Slider Control的當前位置而改變。要注意的是,當錯誤發生時,頁面從不會完全導航到。我不確定我能做些什麼來解決這個問題,有什麼想法?在後面的代碼中設置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

@Mthethe,滑塊值是否等於'1'?交換機案例的默認行爲是什麼? – Olter

+0

我剛剛將我的Slider控件添加到了我的原始文章中。我實際上總共有6個案例,它只停留在第一個案例。 – Matthew

回答

1

ValueChangedInitializeComponent()被觸發而TextBlock爲空。 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

相關問題