我正在尝试在C#中验证我的WPF程序,以检查用户是否在DatePicker事件中输入了日期。如果用户没有输入我想要的日期,让用户在再次运行整个程序之前重新输入数据。如果用户输入的数字小于1或大于10,我也希望它也能这样做。但是目前它只是继续执行程序的其余部分,导致它稍后中断。
我的'textbox'事件称为UserInput,我的DatePicker称为'RequestedDate'
我的代码:
if (int.TryParse(UserInput.Text, out numberEntered))
{
while (DateRequested.SelectedDate == null)
{
MessageBox.Show("You have not input a valid date");
Output.Text = "Please try again";
}
while (numberEntered < 1 || numberEntered > 10)
{
MessageBox.Show("You can only book tickets with values more than one or less than 10");
Output.Text = "Please try again";
break;
}
Output.Text = "Number of tickets selected: " + UserInput.Text + "Date: " + DateRequested.Text;
}
答案 0 :(得分:0)
这里有几个问题:
1 - UI元素不是'事件',因此没有这样的东西
TextBox Event
。2 - UI is not Data。因此,你应该抽象出你的逻辑 ViewModel并对此进行操作。
发布您的XAML,我将编辑我的答案,显示实现此目的的正确方法。
答案 1 :(得分:0)
您应该将TextBox.Text
绑定到DateTime
对象,如果输入的数据不正确,则会通过在TextBox
周围添加红色边框来向用户提供反馈。
如果DateTime
是强制性的,则应为ValidationRule
设置TextBox
进行验证,无需将所有此UI逻辑拖到模型中。