private static void OnIsTimeShownChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if ((bool)e.NewValue != (bool)e.OldValue) { DateTimeEditor dt = d as DateTimeEditor; if ((bool)e.NewValue) { if (string.IsNullOrEmpty(dt.dtFormat)) { dt.dtFormat = DateTimeEditor.formatProvider[dt.CultureInfo.Name].TimeFormat; } else { dt.dtFormat = DateTimeEditor.formatProvider[dt.CultureInfo.Name].DateFormat + " " + DateTimeEditor.formatProvider[dt.CultureInfo.Name].TimeFormat; } } else { dt.dtFormat = DateTimeEditor.formatProvider[dt.CultureInfo.Name].DateFormat; } dt.Mask = dt.dtFormat.Replace('H', '0').Replace('M', '0').Replace('d', '0').Replace('m', '0').Replace('y', '0').Replace('s', '0'); if (!dt.IsNullable) { dt.Value = DateTime.Now; } else { dt.Value = DateTime.Parse("1/1/0001 00:00:00"); } dt.RefreshText(dt.MaskProvider, 0); } }
private static void minValueChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { DateTimeEditor DateTimeUpDown = ((DateTimeEditor)d); DateTimeUpDown.CoerceValue(DateTimeEditor.MaxValueProperty); DateTimeUpDown.CoerceValue(DateTimeEditor.ValueProperty); }
private static object coerceFormatCallback(DependencyObject d, object value) { DateTimeEditor DateTimeUpDown = ((DateTimeEditor)d); // check format is valid return(value); }
//force the text of the control to use the mask private static object ForceText(DependencyObject sender, object value) { if (!isValueChanging) { DateTimeEditor textBox = (DateTimeEditor)sender; if (textBox.Mask != null) { MaskedTextProvider provider = textBox.MaskProvider; provider.Set((string)value); isValueChanging = true; //prevent endless loop if (value == null || string.IsNullOrEmpty((string)value)) { if (textBox.IsNullable) { textBox.Value = DateTime.Parse("1/1/0001 00:00:00"); } else { throw new Exception("Only IsNullable is set to true, Text can be empty."); } } else { DateTime result = new DateTime(); if (!DateTime.TryParse((string)value, textBox.CultureInfo, DateTimeStyles.None, out result)) { textBox.lastValidValue = textBox.Value; } else { textBox.Value = result; } } isValueChanging = false; if (value == null || string.IsNullOrEmpty((string)value)) { return(""); } else { return(provider.ToDisplayString()); } } } return(value); }
private static void valueChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { DateTimeEditor dt = (DateTimeEditor)d; DateTimeChangedEventArgs ea = new DateTimeChangedEventArgs(DateTimeEditor.ValueChangedEvent, d, (DateTime?)e.OldValue, (DateTime?)e.NewValue); dt.RaiseEvent(ea); //if (ea.Handled) DateTimeUpDown.Value = (DateTime)e.OldValue; //else if (e.NewValue == null) { dt.PART_TextBox.Text = string.Empty; } else { dt.PART_TextBox.Text = ((DateTime)e.NewValue).ToString(dt.Format); } }
private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (!isValueChanging) { isValueChanging = true; DateTimeEditor dt = d as DateTimeEditor; if (dt != null) { if (((DateTime)e.NewValue).ToString("dd/MM/yyyy HH:mm:ss") != "1/1/0001 00:00:00") { dt.Text = ((DateTime)e.NewValue).ToString(dt.dtFormat, dt.CultureInfo); dt.RefreshText(dt.MaskProvider, 0); } else { dt.Text = ""; } } isValueChanging = false; } }
private static object coerceValueCallback(DependencyObject d, object value) { DateTimeEditor dt = (DateTimeEditor)d; if (value != null) { DateTime val = (DateTime)value; if (val > dt.MinValue && val < dt.MaxValue) { return(val); } else if (val < dt.MinValue) { return(dt.MinValue); } else if (val < dt.MaxValue) { return(dt.MaxValue); } } return(null); }