57 lines
1.9 KiB
C#
57 lines
1.9 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|