有没有办法将掩码应用于DatePicker的文本框?

时间:2010-09-08 16:47:29

标签: wpf wpf-controls

我正在开发我的第一个WPF应用程序。在这种情况下,使用VS 2010.我的用户习惯于输入这样的日期:“09082010”(没有双引号;这将代表今天)。进入后,它会转换为9/8/2010。我已将DatePicker控件放到WPF页面上,但如果用户输入09082010,则它不会将其识别为日期并忽略它。我已经应用了IValueConverter,没有效果,因为它不会将“09082010”识别为日期。所以,我想知道,是否可以在VS 2010中的DatePicker的文本框中应用掩码,这样当用户输入09082010时,它会将其更改为09/08/2010(至少)?

1 个答案:

答案 0 :(得分:2)

这是你可以做的事情:处理DatePicker中的TextBox.TextChanged事件,然后在事件处理程序中,放置自定义逻辑来解析当前文本。像这样:

<DatePicker x:Name="dp" TextBoxBase.TextChanged="DatePicker_TextChanged"/>

private void DatePicker_TextChanged(object sender, TextChangedEventArgs e)
        {
            DateTime dt;
            DatePicker dp = (sender as DatePicker);
            string currentText = (e.OriginalSource as TextBox).Text;
            if (!DateTime.TryParse(currentText, out dt))
            {
                try
                {
                    string month = currentText.Substring(0,2);
                    string day = currentText.Substring(2,2);
                    string year = currentText.Substring(4,4);

                    dt = new DateTime(int.Parse(year), int.Parse(month), int.Parse(day));
                    dp.SelectedDate = dt;
                }
                catch (Exception ex)
                {
                    dp.SelectedDate = null;
                }
            }

        }

我知道它不漂亮。但这可能是一个开始。