using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Wino.Core.Domain.Enums; namespace Wino.Calendar.Controls; public partial class DayHeaderControl : Control { private const string PART_DayHeaderTextBlock = nameof(PART_DayHeaderTextBlock); private TextBlock HeaderTextblock; public DayHeaderDisplayType DisplayType { get { return (DayHeaderDisplayType)GetValue(DisplayTypeProperty); } set { SetValue(DisplayTypeProperty, value); } } public DateTime Date { get { return (DateTime)GetValue(DateProperty); } set { SetValue(DateProperty, value); } } public static readonly DependencyProperty DateProperty = DependencyProperty.Register(nameof(Date), typeof(DateTime), typeof(DayHeaderControl), new PropertyMetadata(default(DateTime), new PropertyChangedCallback(OnHeaderPropertyChanged))); public static readonly DependencyProperty DisplayTypeProperty = DependencyProperty.Register(nameof(DisplayType), typeof(DayHeaderDisplayType), typeof(DayHeaderControl), new PropertyMetadata(DayHeaderDisplayType.TwentyFourHour, new PropertyChangedCallback(OnHeaderPropertyChanged))); public DayHeaderControl() { DefaultStyleKey = typeof(DayHeaderControl); } protected override void OnApplyTemplate() { base.OnApplyTemplate(); HeaderTextblock = GetTemplateChild(PART_DayHeaderTextBlock) as TextBlock; UpdateHeaderText(); } private static void OnHeaderPropertyChanged(DependencyObject control, DependencyPropertyChangedEventArgs e) { if (control is DayHeaderControl headerControl) { headerControl.UpdateHeaderText(); } } private void UpdateHeaderText() { if (HeaderTextblock != null) { HeaderTextblock.Text = DisplayType == DayHeaderDisplayType.TwelveHour ? Date.ToString("h tt") : Date.ToString("HH:mm"); } } }