滑块控件基于Slider_ValueChanged上的值错误更新标签

Slider Control Update Label Based on Value Error on Slider_ValueChanged

提问人:ExpertOnNothing 提问时间:10/30/2023 最后编辑:ExpertOnNothing 更新时间:10/30/2023 访问量:47

问:

试图做一些超级简单的事情,但我没有得到它。对这个编程的东西有点陌生。我有一个滑块控件。我有两个标签。一个 我已绑定到滑块的值以显示所选值。我还有另一个标签,我有措辞。如果滑块值为 1,我希望它显示“玩家”。如果它大于 1,我希望它说“玩家”

  <Viewbox Grid.Column="1" Margin="10">
  <Slider x:Name="sliderhunter" Minimum  = "1" Maximum = "8" Width="200" TickFrequency = "1" Value="2" 
   TickPlacement = "BottomRight" ValueChanged = "sliderhunter_ValueChanged" Margin = "10" IsMoveToPointEnabled="True" IsSnapToTickEnabled="True"/>


  </Viewbox>
  <TextBox Grid.Column="1" IsHitTestVisible="False"  Foreground="White" Text="{Binding Value, ElementName=sliderhunter, UpdateSourceTrigger=PropertyChanged}" TextAlignment="Left" Height="68" VerticalAlignment="Top" FontSize="50" Background="Transparent" HorizontalContentAlignment="Left" BorderBrush="Transparent" Margin="43,34,469,0" />
  <Label Grid.Column="1" IsHitTestVisible="False" x:FieldModifier="Public"   Content="Hunters" HorizontalContentAlignment="Left" Height="80" VerticalAlignment="Top" FontSize="50" Background="Transparent" BorderBrush="Transparent" Margin="95,34,343,0" x:Name="txtHunter" />
               

还有我背后的简单代码。

  Private Sub sliderhunter_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double)) Handles sliderhunter.ValueChanged
        If e.NewValue > 1 Then

            txtHunter.Content = "Players"
        Else
            txtHunter.Content = "Player"
        End If

    End Sub

它被挂在另一个上,并带有“对象引用未设置为对象的实例”。我也不明白。我将值设置为 2,因此其他值甚至不应该进入其中。我花了两个小时来讨论这个问题。如果您能提供帮助,请在解释中使用蜡笔。就像我说的,仍然在努力学习所有这些东西。

@emoacht

System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
  Source=GameProject
  StackTrace:
   at GameProject.winSetGameSettings.sliderhunter_ValueChanged(Object sender, RoutedPropertyChangedEventArgs`1 e) in C:\Users\mgobl\source\repos\GameScoreBoard\GameScoreboard\winSetGameSettings.xaml.vb:line 2571

这是错误屏幕:Error Details

WPF vb.net 滑块 WPF 控件

评论

0赞 emoacht 10/30/2023
你能发布整个异常消息吗?
0赞 ExpertOnNothing 10/30/2023
@emoacht - 我用图片和消息编辑了我的问题。

答:

0赞 MIHOW 10/30/2023 #1

要回答为什么会出现异常的问题,这仅仅是因为 XAML 语言也是区分顺序的语言。Object reference not set to an instance of an object

这意味着如果你把滑块放在标签之后,不会有任何例外,当滑块被调用时,beacaue已经初始化了。sliderhuntertxtHunterValueChangedtxtHunter

但总的来说,如果你想让这个应用程序“以正确的方式”,我建议深入研究MVVM模式,并将逻辑从代码后面移动到ViewModel。

有大量关于 MVVM 的示例和教程,这是在 MVVM 和 WPF 搜索下弹出的第一个链接: https://intellitect.com/blog/getting-started-model-view-viewmodel-mvvm-pattern-using-windows-presentation-framework-wpf/

评论

0赞 ExpertOnNothing 10/30/2023
好吧,现在我感觉更傻了。就是这样。将文本框移到滑块和宾果游戏上方!我也会研究MVVM的东西。我觉得我应该学习它。我只是有点被它吓倒了。我涉足了一些 MVC 的东西,但我就是无法掌握它,所以我觉得 MVVM 将是同样的挑战。感谢您对此的帮助。Emoacht 也谢谢你。