gpt4 book ai didi

c# - 如何根据 slider 值动态更改标签?

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:34 26 4
gpt4 key购买 nike

我正在写一个成绩计算器,我目前有一个 slider ,旁边有一个文本框,显示 slider 的当前值:

    <Slider Name="gradeSlider"
Grid.Row="3"
Grid.Column="2"
VerticalAlignment="Center"
Minimum="40"
Maximum="100"
IsSnapToTickEnabled="True"
TickFrequency="5"
TickPlacement="BottomRight"/>
<TextBox Name="targetGrade"
Grid.Row="3"
Grid.Column="3"
Width="30"
Height="23"
Text="{Binding ElementName=gradeSlider, Path=Value}"
TextAlignment="Center"/>

但是,我正在努力添加一个标签,该标签将根据 slider 的值范围显示不同的等级分类。我本以为我可以创建标签:

<Label     Name="gradeClass"
Grid.Row="2"
Grid.Column="2"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"/>

然后使用代码:

        string gradeText;

if (gradeSlider.Value >= 40 && gradeSlider.Value < 50)
{
gradeText = "Pass";
gradeClass.Content = gradeText;
}
else if (gradeSlider.Value >= 50 && gradeSlider.Value < 60)
{
gradeText = "2:2";
gradeClass.Content = gradeText;
}
else
{
gradeText = "so on...";
gradeClass.Content = gradeText;
}

但是无论 slider 值如何,标签都保持为“通过”。有人可以告诉我我哪里出错了吗?我尝试在 Label xaml 上使用 Content = "{Binding Source = gradeText}" 并删除代码中的 gradeClass.Content 但它提示已声明 gradeText 但没用过。非常感谢任何可以提供帮助的人。

最佳答案

最简单的方法是将 Label 内容绑定(bind)到 Slider 的值并添加转换器,如下所示:

<Label Name="gradeClass"
Grid.Row="2"
Grid.Column="2"
Text="{Binding ElementName=gradeSlider, Path=Value, Converter={StaticResource SliderValueToTextConverter}}"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"/>

有几种定义转换器的方法。例如,您可以在宿主元素资源中定义它,假设您将所有这些控件放在窗口中,那么:

<Window.Resources>
<convertors:SliderValueToTextConverter x:Key="SliderValueToTextConverter" />
</Window.Resources>

converter是一个类,实现了IValueConverter接口(interface)。关于转换器的好文章: http://www.wpftutorial.net/ValueConverters.html , http://www.dev102.com/2008/07/17/wpf-binding-converter-best-practices/

但正如 Yaur 悲伤的那样——“真正”的方法是使用 MVVM 模式而不是在控件之间绑定(bind),而是将控件绑定(bind)到 ViewModel 属性然后使用转换器。

更新:关于转换器的一个重要话题: Should I declare converters in App.xaml or as a per-file resource?

关于c# - 如何根据 slider 值动态更改标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com