C# 仅在C中的WPF应用程序中检索数值的最佳方法#
我正在寻找一种方法来检索并强制用户在WPF应用程序(用C#开发)中输入int值 最好的方法是什么?我见过“TextBox”可以通过值解析来完成这项工作,但我想知道是否有更好的方法可以通过另一个WPF控件(而不是TextBox)来帮助用户更轻松地完成这项工作(例如,使用向上或向下按钮来递增或递减)C# 仅在C中的WPF应用程序中检索数值的最佳方法#,c#,wpf,user-interface,wpf-controls,C#,Wpf,User Interface,Wpf Controls,我正在寻找一种方法来检索并强制用户在WPF应用程序(用C#开发)中输入int值 最好的方法是什么?我见过“TextBox”可以通过值解析来完成这项工作,但我想知道是否有更好的方法可以通过另一个WPF控件(而不是TextBox)来帮助用户更轻松地完成这项工作(例如,使用向上或向下按钮来递增或递减) 我们的目标是通过在“价值”选择过程中“引导”他来简化用户体验我很快就为你们写了这篇文章。这不是最有效的方法,您还可以实现更多验证,如十进制数或非负数。此外,您还可以设置TexBoxIsReadOnly=
我们的目标是通过在“价值”选择过程中“引导”他来简化用户体验我很快就为你们写了这篇文章。这不是最有效的方法,您还可以实现更多验证,如十进制数或非负数。此外,您还可以设置
TexBox
IsReadOnly=true
,以确保用户不输入任何非数值
你们可以做很多事情!这只是给你一个想法
XAML
<StackPanel Orientation="Horizontal" Width="200" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBox x:Name="NumberBox" VerticalAlignment="Center" Width="120" Text="0"></TextBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Center"
Margin="2 0 0 0" Spacing="1">
<Button x:Name="UpBtn" Width="50" Height="25" Click="IncrementDecrement">▲</Button>
<Button x:Name="DownBtn" Width="50" Height="25" Click="IncrementDecrement">▼</Button>
</StackPanel>
</StackPanel>
结果
我不是WPF专家,但您可以在文本框(直接在XAML中)上实现验证规则。最简单和(IMHO)的建议意见是“明确它必须包含一个数字”。关于“澄清”,我指的是文本框的描述(工具提示、标签等等)和文本框的验证(参见更多,验证:),另一方面,还有另一个选项“违反MVVM的纯概念”:只需使用
绑定类型int
的属性。验证将自动执行。用户将看到无效值的红色笔划。
private void IncrementDecrement(object sender, RoutedEventArgs e)
{
var senderBtn = sender as Button;
var value = NumberBox.Text.Trim();
if (string.IsNullOrEmpty(value))
{
value = 0.ToString();
}
bool success = Int32.TryParse(value, out var number);
if (!success)
{
// show error
return;
}
NumberBox.Text = senderBtn.Name == "UpBtn" ? (++number).ToString() : (--number).ToString();
}