使用循环验证然后允许用户再次输入

时间:2013-02-19 20:23:37

标签: c# wpf loops datepicker

我正在尝试在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;
}

2 个答案:

答案 0 :(得分:0)

这里有几个问题:

  

1 - UI元素不是'事件',因此没有这样的东西   TextBox Event

     

2 - UI is not Data。因此,你应该抽象出你的逻辑   ViewModel并对此进行操作。

发布您的XAML,我将编辑我的答案,显示实现此目的的正确方法。

答案 1 :(得分:0)

您应该将TextBox.Text绑定到DateTime对象,如果输入的数据不正确,则会通过在TextBox周围添加红色边框来向用户提供反馈。

如果DateTime是强制性的,则应为ValidationRule设置TextBox进行验证,无需将所有此UI逻辑拖到模型中。