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