private static void DatePickerOnCalendarOpened(object sender, RoutedEventArgs e) { var datePicker = (DatePicker)sender; var textBox = GetTemplateTextBox(datePicker); var formatStr = GetDateFormat(datePicker); textBox.Text = DatePickerDateTimeConverter.DateTimeToString(formatStr, datePicker.SelectedDate); }
private static void textBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { e.Handled = true; var textBox = (TextBox)sender; var datePicker = (DatePicker)textBox.TemplatedParent; var dateStr = textBox.Text; var formatStr = GetDateFormat(datePicker); datePicker.SelectedDate = DatePickerDateTimeConverter.StringToDateTime(datePicker, formatStr, dateStr); }
private static void DatePickerOnCalendarOpened(object sender, RoutedEventArgs routedEventArgs) { /* When DatePicker's TextBox is not focused and its Calendar is opened by clicking its calendar button * it again sets its text to the result of its internal date parsing. A workaround is to set this * to our own string when it is opened. */ var datePicker = (DatePicker)sender; var textBox = GetTemplateTextBox(datePicker); var formatStr = GetDateFormat(datePicker); textBox.Text = DatePickerDateTimeConverter.ParseDateTime(formatStr, datePicker.SelectedDate); }
private static void DatePickerOnCalendarOpened(object sender, RoutedEventArgs e) { /* When DatePicker's TextBox is not focused and its Calendar is opened by clicking its calendar button * its text will be the result of its internal date parsing until its TextBox is focused and another * date is selected. A workaround is to set this string when it is opened. */ var datePicker = (DatePicker)sender; var textBox = GetTemplateTextBox(datePicker); var formatStr = GetDateFormat(datePicker); textBox.Text = DatePickerDateTimeConverter.DateTimeToString(formatStr, datePicker.SelectedDate); }
private static void DatePickerOnKeyUp(object sender, KeyEventArgs e) { if (e.Key != Key.Return) { return; } var datePicker = (DatePicker)sender; var formatStr = GetDateFormat(datePicker); var customTextBox = GetDatePickerTextBox(datePicker); var dateStr = customTextBox.Text; datePicker.SelectedDate = DatePickerDateTimeConverter.ParseString(datePicker, formatStr, dateStr); customTextBox.Text = DatePickerDateTimeConverter.ParseDateTime(formatStr, datePicker.SelectedDate); }
private static void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key != Key.Return) { return; } e.Handled = true; var textBox = (TextBox)sender; var datePicker = (DatePicker)textBox.TemplatedParent; var dateStr = textBox.Text; var formatStr = GetDateFormat(datePicker); datePicker.SelectedDate = DatePickerDateTimeConverter.StringToDateTime(datePicker, formatStr, dateStr); }
private static void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key != Key.Return) { return; } /* DatePicker subscribes to its TextBox's KeyDown event to set its SelectedDate. When this * happens it sets its text to the result of its internal date parsing if Key.Return was * pressed. A workaround is to stop the KeyDown event bubbling up and handling setting the * DatePicker.SelectedDate ourself. */ e.Handled = true; var textBox = (TextBox)sender; var datePicker = (DatePicker)textBox.TemplatedParent; var dateStr = textBox.Text; var formatStr = GetDateFormat(datePicker); datePicker.SelectedDate = DatePickerDateTimeConverter.ParseString(datePicker, formatStr, dateStr); }
private static void TextBoxOnPreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key != System.Windows.Input.Key.Return) { return; } /* DatePicker subscribes to its TextBox's KeyDown event to set its SelectedDate if Key.Return was * pressed. When this happens its text will be the result of its internal date parsing until it * loses focus or another date is selected. A workaround is to stop the KeyDown event bubbling up * and handling setting the DatePicker.SelectedDate. */ e.Handled = true; var textBox = (TextBox)sender; var datePicker = (DatePicker)textBox.TemplatedParent; var dateStr = textBox.Text; var formatStr = GetDateFormat(datePicker); datePicker.SelectedDate = DatePickerDateTimeConverter.StringToDateTime(datePicker, formatStr, dateStr); }