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

本文关键字:抛出异常 WPF 为什么 | 更新日期: 2023-09-27 18:16:27

代码:

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"的标签来更改文本。

上面的代码在运行时抛出一个异常——"对象引用未设置为对象的实例。">

但是,一旦我在XAML中同时更改了"Value"answers"Minimum"的值,它就可以正常工作了。就好像我不能让它不从零开始。这真的很奇怪。有什么帮助吗?

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

如果我查看提供的堆栈跟踪,那么在我看来nullexception的唯一可能原因是tickCounter==null

与其使用事件更新标签,不如使用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"} />