提问人:ExpertOnNothing 提问时间:10/30/2023 最后编辑:ExpertOnNothing 更新时间:10/30/2023 访问量:47
滑块控件基于Slider_ValueChanged上的值错误更新标签
Slider Control Update Label Based on Value Error on Slider_ValueChanged
问:
试图做一些超级简单的事情,但我没有得到它。对这个编程的东西有点陌生。我有一个滑块控件。我有两个标签。一个 我已绑定到滑块的值以显示所选值。我还有另一个标签,我有措辞。如果滑块值为 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
答:
0赞
MIHOW
10/30/2023
#1
要回答为什么会出现异常的问题,这仅仅是因为 XAML 语言也是区分顺序的语言。Object reference not set to an instance of an object
这意味着如果你把滑块放在标签之后,不会有任何例外,当滑块被调用时,beacaue已经初始化了。sliderhunter
txtHunter
ValueChanged
txtHunter
但总的来说,如果你想让这个应用程序“以正确的方式”,我建议深入研究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 也谢谢你。
评论