TimeSelectorView.axaml.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Avalonia;
  2. using Avalonia.Controls;
  3. using Avalonia.Controls.Primitives;
  4. using Avalonia.Controls.Templates;
  5. using Avalonia.Markup.Xaml;
  6. namespace InABox.Avalonia.Components.TimeSelector;
  7. public partial class TimeSelectorView : UserControl
  8. {
  9. public TimeSelectorView()
  10. {
  11. InitializeComponent();
  12. }
  13. protected override void OnInitialized()
  14. {
  15. base.OnInitialized();
  16. (DataContext as TimeSelectorViewModel)!.GetTime = GetTime;
  17. }
  18. private TimeSpan? GetTime()
  19. {
  20. var hourSelector = TimePicker.GetTemplateChildren().OfType<DateTimePickerPanel>().FirstOrDefault(x => x.Name == "PART_HourSelector");
  21. var minuteSelector = TimePicker.GetTemplateChildren().OfType<DateTimePickerPanel>().FirstOrDefault(x => x.Name == "PART_MinuteSelector");
  22. var periodSelector = TimePicker.GetTemplateChildren().OfType<DateTimePickerPanel>().FirstOrDefault(x => x.Name == "PART_PeriodSelector");
  23. var hr = hourSelector!.SelectedValue;
  24. var min = minuteSelector!.SelectedValue;
  25. var per = periodSelector!.SelectedValue;
  26. hr = per == 1 ? (hr == 12) ? 12 : hr + 12 : per == 0 && hr == 12 ? 0 : hr;
  27. return new(hr, min, 0);
  28. }
  29. }