From d19dd58f04237719e2035145095744502711248f Mon Sep 17 00:00:00 2001 From: rabbitism Date: Thu, 16 May 2024 23:03:28 +0800 Subject: [PATCH] fix: fix panel format change handling. --- demo/Ursa.Demo/Pages/TimePickerDemo.axaml | 29 +++++++++--- .../DateTimePicker/TimePickerPresenter.cs | 47 +++++++++++-------- 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/demo/Ursa.Demo/Pages/TimePickerDemo.axaml b/demo/Ursa.Demo/Pages/TimePickerDemo.axaml index 3e1b4c9..7a8c8bf 100644 --- a/demo/Ursa.Demo/Pages/TimePickerDemo.axaml +++ b/demo/Ursa.Demo/Pages/TimePickerDemo.axaml @@ -11,21 +11,36 @@ + + + PanelFormat="{Binding #panelFormat.Text}" /> + - + InnerRightContent="截止" + NeedConfirmation="True" + PanelFormat="{Binding #panelFormat.Text}" /> + diff --git a/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs b/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs index 0f8db96..044c2f6 100644 --- a/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs +++ b/src/Ursa/Controls/DateTimePicker/TimePickerPresenter.cs @@ -141,31 +141,38 @@ public class TimePickerPresenter : TemplatedControl foreach (var part in parts) { if (part.Length < 1) continue; - if ((part.Contains('h') || part.Contains('H')) && !panels.Contains(_hourScrollPanel)) + try { - panels.Add(_hourScrollPanel); - _use12Clock = part.Contains('h'); - _hourSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part.ToLower()); - if (_hourSelector is not null) + if ((part.Contains('h') || part.Contains('H')) && !panels.Contains(_hourScrollPanel)) { - _hourSelector.MaximumValue = _use12Clock ? 12 : 23; - _hourSelector.MinimumValue = _use12Clock ? 1: 0; + panels.Add(_hourScrollPanel); + _use12Clock = part.Contains('h'); + _hourSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part.ToLower()); + if (_hourSelector is not null) + { + _hourSelector.MaximumValue = _use12Clock ? 12 : 23; + _hourSelector.MinimumValue = _use12Clock ? 1 : 0; + } + } + else if (part[0] == 'm' && !panels.Contains(_minuteSelector)) + { + panels.Add(_minuteScrollPanel); + _minuteSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part); + } + else if (part[0] == 's' && !panels.Contains(_secondScrollPanel)) + { + panels.Add(_secondScrollPanel); + _secondSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part.Replace('s', 'm')); + } + else if (part[0] == 't' && !panels.Contains(_ampmScrollPanel)) + { + panels.Add(_ampmScrollPanel); + _ampmSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part); } } - else if (part[0] == 'm' && !panels.Contains(_minuteSelector)) + catch { - panels.Add(_minuteScrollPanel); - _minuteSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part); - } - else if (part[0] == 's' && !panels.Contains(_secondScrollPanel)) - { - panels.Add(_secondScrollPanel); - _secondSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part.Replace('s', 'm')); - } - else if (part[0] == 't' && !panels.Contains(_ampmScrollPanel)) - { - panels.Add(_ampmScrollPanel); - _ampmSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part); + } }