DatePicker
次のテキストをDateTime
(国際形式で表示)に変換して、顧客がテキストボックスに日付をDatePicker
すばやく書き込むことができるようにしたいので、使用するのDateTime.Parse
は私だけではありません。
"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
私はそれを行うためにさまざまな方法を試しましたが、それらは機能しません。DatePicker.Text
//カスタムvalueconverterでDatePicker.SelectedDate
バインドしようとしました。しかし、テキストに到達する前にすでにテキストを処理しているDatePicker.DisplayDate
ため、機能しません。DatePicker
私もDatePicker
TextBox.LostFocus
このように変換しようとしました:
public class CustomDatePicker : DatePicker
{
private DatePickerTextBox textBox;
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
textBox = this.GetTemplateChild("TextBox") as DatePickerTextBox;
if (textBox != null)
textBox.LostFocus += 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;
}
}
}
何か案は?