Хорошо, наконец, я посмотрел на исходный код DatePicker
, и я мало что могу сделать с точки зрения конвертеров и т. Д., Поскольку большинство вещей является закрытым, и только два доступных формата - «короткий» и «длинный». Наконец, мне придется создать свой собственный элемент управления, возможно, частично с использованием решения Aviad, описанного выше. Тем не менее, вот быстрое временное решение до тех пор (где DateHelper
- мой класс анализатора):
public class CustomDatePicker : DatePicker
{
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
this.TryTransformDate();
}
base.OnPreviewKeyDown(e);
}
protected override void OnPreviewLostKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
this.TryTransformDate();
base.OnPreviewLostKeyboardFocus(e);
}
protected void TryTransformDate()
{
DateTime tryDate;
if (DateHelper.TryParseDate(this.Text, out tryDate))
{
switch (this.SelectedDateFormat)
{
case DatePickerFormat.Short:
{
this.Text = tryDate.ToShortDateString();
break;
}
case DatePickerFormat.Long:
{
this.Text = tryDate.ToLongDateString();
break;
}
}
}
}
}