Почему этот слайдер WPF вызывает исключение? - PullRequest
0 голосов
/ 03 декабря 2011

Код:

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» для изменения текста.

Приведенный выше код вызывает исключение при запуске - «Ссылка на объект не установлена ​​на экземпляр объекта.»

Однако, как только я изменяюоба значения «Value» и «Minimum» в XAML работают нормально.Как будто я не могу заставить его не начинать с нуля.Это действительно странно.Любая помощь?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Вместо того, чтобы использовать события для обновления метки, используйте 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"} />
2 голосов
/ 03 декабря 2011

Если я посмотрю на предоставленную трассировку стека, то единственной возможной причиной nullexception мне кажется, что tickCounter == null

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...