fix: fix panel format change handling.

This commit is contained in:
rabbitism
2024-05-16 23:03:28 +08:00
parent 2ccea8fe1e
commit d19dd58f04
2 changed files with 49 additions and 27 deletions

View File

@@ -11,21 +11,36 @@
<StackPanel HorizontalAlignment="Left"> <StackPanel HorizontalAlignment="Left">
<ToggleSwitch Name="needConfirm" Content="Need Confirm" /> <ToggleSwitch Name="needConfirm" Content="Need Confirm" />
<TextBlock Text="{Binding #picker.SelectedTime}" /> <TextBlock Text="{Binding #picker.SelectedTime}" />
<TextBox
Name="displayFormat"
Width="300"
InnerLeftContent="Display Format"
Text="HH 时 mm 分 ss 秒" />
<TextBox
Name="panelFormat"
Width="300"
InnerLeftContent="Panel Format"
Text="tt HH mm ss" />
<u:TimePicker <u:TimePicker
Name="picker" Name="picker"
Width="200" Width="200"
HorizontalAlignment="Left" HorizontalAlignment="Left"
DisplayFormat="{Binding #displayFormat.Text}"
NeedConfirmation="{Binding #needConfirm.IsChecked}" NeedConfirmation="{Binding #needConfirm.IsChecked}"
PanelFormat="hh mm tt" /> PanelFormat="{Binding #panelFormat.Text}" />
<u:TimePicker <u:TimePicker
Width="300" Width="300"
Classes="ClearButton"
DisplayFormat="HH 时 mm 分 ss 秒"
PanelFormat="tt HH mm ss"
HorizontalAlignment="Left" HorizontalAlignment="Left"
NeedConfirmation="True" Classes="ClearButton"
DisplayFormat="{Binding #displayFormat.Text}"
InnerLeftContent="时刻" InnerLeftContent="时刻"
InnerRightContent="截止" /> InnerRightContent="截止"
<u:TimeRangePicker Width="300"></u:TimeRangePicker> NeedConfirmation="True"
PanelFormat="{Binding #panelFormat.Text}" />
<u:TimeRangePicker
Width="300"
DisplayFormat="{Binding #displayFormat.Text}"
PanelFormat="{Binding #panelFormat.Text}" />
</StackPanel> </StackPanel>
</UserControl> </UserControl>

View File

@@ -141,31 +141,38 @@ public class TimePickerPresenter : TemplatedControl
foreach (var part in parts) foreach (var part in parts)
{ {
if (part.Length < 1) continue; if (part.Length < 1) continue;
if ((part.Contains('h') || part.Contains('H')) && !panels.Contains(_hourScrollPanel)) try
{ {
panels.Add(_hourScrollPanel); if ((part.Contains('h') || part.Contains('H')) && !panels.Contains(_hourScrollPanel))
_use12Clock = part.Contains('h');
_hourSelector?.SetValue(DateTimePickerPanel.ItemFormatProperty, part.ToLower());
if (_hourSelector is not null)
{ {
_hourSelector.MaximumValue = _use12Clock ? 12 : 23; panels.Add(_hourScrollPanel);
_hourSelector.MinimumValue = _use12Clock ? 1: 0; _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);
} }
} }