为什么这个WPF滑块会抛出异常?

时间:2011-12-03 05:53:30

标签: c# wpf xaml slider

代码:

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开始。每次移动滑块时,我都想要一个名为&#39; tickCounter&#39;的标签。改变文字。

以上代码在运行时抛出异常 - &#34;对象引用未设置为对象的实例。&#34;

然而,一旦我改变了&#34;值&#34;的值。和&#34;最低&#34;在XAML中它工作正常。这好像我不能让它从零开始。这真的很奇怪。有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

如果我查看提供的堆栈跟踪,那么我认为唯一可能的原因是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"} />