From 2ccea8fe1ebc15c437cef074df38eb76388695d8 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Thu, 16 May 2024 22:48:46 +0800 Subject: [PATCH] feat: make panel format nullable. Update display text on display format change. --- src/Ursa/Controls/DateTimePicker/TimePicker.cs | 10 ++++++++++ .../Controls/DateTimePicker/TimePickerPresenter.cs | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Ursa/Controls/DateTimePicker/TimePicker.cs b/src/Ursa/Controls/DateTimePicker/TimePicker.cs index 983e3d2..1383bac 100644 --- a/src/Ursa/Controls/DateTimePicker/TimePicker.cs +++ b/src/Ursa/Controls/DateTimePicker/TimePicker.cs @@ -39,6 +39,16 @@ public class TimePicker : TimePickerBase, IClearControl { SelectedTimeProperty.Changed.AddClassHandler((picker, args) => picker.OnSelectionChanged(args)); + DisplayFormatProperty.Changed.AddClassHandler((picker, args) => picker.OnDisplayFormatChanged(args)); + } + + private void OnDisplayFormatChanged(AvaloniaPropertyChangedEventArgs args) + { + if (_textBox is null) return; + var time = SelectedTime; + var date = new DateTime( 1, 1, 1, time.Value.Hours, time.Value.Minutes, time.Value.Seconds); + var text = date.ToString(DisplayFormat); + _textBox.Text = text; } public string? Watermark diff --git a/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs b/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs index dedf751..0f8db96 100644 --- a/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs +++ b/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs @@ -130,12 +130,12 @@ public class TimePickerPresenter : TemplatedControl private void OnPanelFormatChanged(AvaloniaPropertyChangedEventArgs args) { var format = args.NewValue.Value; - UpdatePanelLayout(format); } - private void UpdatePanelLayout(string panelFormat) + private void UpdatePanelLayout(string? panelFormat) { + if (panelFormat is null) return; var parts = panelFormat.Split(new[] { ' ', '-', ':' }, StringSplitOptions.RemoveEmptyEntries); var panels = new List(); foreach (var part in parts)