using System.Text.RegularExpressions; using System.Windows.Input; using Xceed.Wpf.Toolkit; namespace BreCalClient { public class DateTimePickerExt : DateTimePicker { protected override void OnPreviewTextInput(TextCompositionEventArgs e) { base.OnPreviewTextInput(e); // Die vom Agenten "vorgeschlagene" Zeit könnte auch der Watermark sein? string text = this.Text + e.Text; if (this.Template.FindName("PART_TextBox", this) is not WatermarkTextBox tb) return; if (Regex.IsMatch(text, @"^\d{3}")) { e.Handled = true; tb.Text = Regex.Replace(text, @"(\d{2})(\d)", "$1.$2"); tb.CaretIndex = tb.Text.Length; } else if (Regex.IsMatch(text, @"^(\d{2}\.\d{3})")) { e.Handled = true; tb.Text = Regex.Replace(text, @"^(\d{2}\.\d{2})(\d)", "$1.$2"); tb.CaretIndex = tb.Text.Length; } else if (Regex.IsMatch(text, @"^(\d{2}\.\d{2}\.\d{2} \d{3})")) { e.Handled = true; tb.Text = Regex.Replace(text, @"(\d{2}\.\d{2}\.\d{2} \d{2})(\d)", "$1:$2"); tb.CaretIndex = tb.Text.Length; } else if (Regex.IsMatch(text, @"^(\d{2}\.\d{2}\.\d{4} \d{3})")) { e.Handled = true; tb.Text = Regex.Replace(text, @"(\d{2}\.\d{2}\.\d{4} \d{2})(\d)", "$1:$2"); tb.CaretIndex = tb.Text.Length; } } } }