private static void ApplyDateFormat(System.Windows.Controls.DatePicker datePicker) { var binding = new Binding("SelectedDate") { RelativeSource = new RelativeSource { AncestorType = typeof(System.Windows.Controls.DatePicker) }, Converter = new DatePickerDateTimeConverter(), ConverterParameter = new Tuple <System.Windows.Controls.DatePicker, string>(datePicker, GetDateFormat(datePicker)), StringFormat = GetDateFormat(datePicker) // This is also new but didnt seem to help }; var textBox = GetTemplateTextBox(datePicker); textBox.SetBinding(TextBox.TextProperty, binding); textBox.PreviewKeyDown -= TextBoxOnPreviewKeyDown; textBox.PreviewKeyDown += TextBoxOnPreviewKeyDown; var dropDownButton = GetTemplateButton(datePicker); datePicker.CalendarOpened -= DatePickerOnCalendarOpened; datePicker.CalendarOpened += DatePickerOnCalendarOpened; // Handle Dropdownbutton PreviewMouseUp to prevent issue of flickering textboxes dropDownButton.PreviewMouseUp -= DropDownButtonPreviewMouseUp; dropDownButton.PreviewMouseUp += DropDownButtonPreviewMouseUp; }
public static DateTime?StringToDateTime(System.Windows.Controls.DatePicker datePicker, string formatStr, string dateStr) { DateTime date; var canParse = DateTime.TryParseExact(dateStr, formatStr, CultureInfo.CurrentCulture, DateTimeStyles.None, out date); if (!canParse) { canParse = DateTime.TryParse(dateStr, CultureInfo.CurrentCulture, DateTimeStyles.None, out date); } return(canParse ? date : datePicker.SelectedDate); }
private static void SetCalendarEventHandlers(System.Windows.Controls.DatePicker datePicker, DependencyPropertyChangedEventArgs e) { if (e.NewValue == e.OldValue) { return; } if ((bool)e.NewValue) { datePicker.CalendarOpened += DatePickerOnCalendarOpened; datePicker.CalendarClosed += DatePickerOnCalendarClosed; } else { datePicker.CalendarOpened -= DatePickerOnCalendarOpened; datePicker.CalendarClosed -= DatePickerOnCalendarClosed; } }
private static ButtonBase GetTemplateButton(System.Windows.Controls.DatePicker datePicker) { return((ButtonBase)datePicker.Template.FindName("PART_Button", datePicker)); }