Hi,
I want DatePicker to convert the following text pieces to DateTime (shown in international format) so my customers can write a date in DatePickers textbox faster so it is not just DateTime.Parse I will use:
"3" to 2009-10-03
"14" to 2009-10-14
"1403" to 2009-03-14
"140310" to 2010-03-14
"14032010" to 2010-03-14
I have tried different methods to do it but they do not work. I have tried to bind DatePicker.Text/DatePicker.SelectedDate/DatePicker.DisplayDate with a custom valueconverter. But it do not work because DatePicker already have processed the text before I get to the text.
I have also tried to convert in the DatePickers TextBox.LostFocus like this:
public class CustomDatePicker : DatePicker
{
private DatePickerTextBox textBox;
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
textBox = this.GetTemplateChild("TextBox") as DatePickerTextBox;
if (textBox != null)
textBox.LostFocus += new RoutedEventHandler(textBox_LostFocus);
}
void textBox_LostFocus(object sender, RoutedEventArgs e)
{
if (textBox == null)
return;
DateTime result;
//This is my method for converting my special cases, parses d, dd, mm, ddmm, ddmmyy, ddmmyyyy
if (textBox.Text.TryParseShortcut(out result))
{
//I have also tried with this.SelectedDate/DisplayDate = result;
textBox.Text = result.ToString("dd/MM/yyyy");
return;
}
if (DateTime.TryParse(textBox.Text, out result))
{
//I have also tried with this.SelectedDate/DisplayDate = result;
textBox.Text = result.ToString("dd/MM/yyyy");
return;
}
}
}
Any ideas?