2011-12-03 56 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" /> 

我想有一個開始於價值1個滿分10分每次移動滑塊我想所謂「標籤滑塊tickCounter '改變文字。

上面的代碼在運行時會引發異常 - 「對象引用未設置爲對象的實例」。

但是,一旦我在XAML中更改了「Value」和「Minimum」的值,它就可以正常工作。就好像我不能讓它不從零開始。這真的很奇怪。任何幫助?

+0

你能找到你到底在哪一行代碼中得到異常嗎?它是在代碼背後還是在頁面生成過程中?你能告訴我們堆棧跟蹤嗎?乾杯! –

+0

它發生在tickCounter.Content = value.ToString();線。 –

+0

http://pastie.org/2958483 –

回答

2

如果我期待在提供堆棧跟蹤,那麼只有nullexception的可能的原因在我看來是tickCounter == NULL

+1

是的,這可能是因爲滑塊比標籤更早被初始化,所以事件觸發並且標籤不在那裏。 –

2

而不是使用事件來更新標籤,使用DataBinding

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

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

另外,如果你不需要任何一個Label的額外能力,你應該使用TextBlock的。

<TextBlock Name="tickCounter" Text="{Binding Path=Value, ElementName=slider1"} /> 
相關問題