fix: Fix DatePicker initialization issue.
This commit is contained in:
@@ -52,16 +52,7 @@ public class DatePicker: DatePickerBase, IClearControl
|
||||
|
||||
private void OnSelectionChanged(AvaloniaPropertyChangedEventArgs<DateTime?> args)
|
||||
{
|
||||
if (args.NewValue.Value is null)
|
||||
{
|
||||
_calendar?.ClearSelection();
|
||||
_textBox?.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
_calendar?.MarkDates(startDate: args.NewValue.Value, endDate: args.NewValue.Value);
|
||||
_textBox?.SetValue(TextBox.TextProperty, args.NewValue.Value.Value.ToString(DisplayFormat ?? "yyyy-MM-dd"));
|
||||
}
|
||||
SyncSelectedDateToText(args.NewValue.Value);
|
||||
}
|
||||
|
||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||
@@ -91,6 +82,7 @@ public class DatePicker: DatePickerBase, IClearControl
|
||||
{
|
||||
_calendar.DateSelected += OnDateSelected;
|
||||
}
|
||||
SyncSelectedDateToText(SelectedDate);
|
||||
}
|
||||
|
||||
private void OnDateSelected(object? sender, CalendarDayButtonEventArgs e)
|
||||
@@ -121,6 +113,20 @@ public class DatePicker: DatePickerBase, IClearControl
|
||||
{
|
||||
SetSelectedDate(true);
|
||||
}
|
||||
|
||||
private void SyncSelectedDateToText(DateTime? date)
|
||||
{
|
||||
if (date is null)
|
||||
{
|
||||
_textBox?.SetValue(TextBox.TextProperty, null);
|
||||
_calendar?.ClearSelection();
|
||||
}
|
||||
else
|
||||
{
|
||||
_textBox?.SetValue(TextBox.TextProperty, date.Value.ToString(DisplayFormat ?? "yyyy-MM-dd"));
|
||||
_calendar?.MarkDates(startDate: date.Value, endDate: date.Value);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetSelectedDate(bool fromText = false)
|
||||
{
|
||||
|
||||
@@ -165,6 +165,42 @@ public class DateRangePicker : DatePickerBase, IClearControl
|
||||
_endCalendar.DatePreviewed += OnDatePreviewed;
|
||||
_endCalendar.ContextDateChanged += OnContextDateChanged;
|
||||
}
|
||||
SyncDateToText();
|
||||
}
|
||||
|
||||
private void SyncDateToText()
|
||||
{
|
||||
if (SelectedStartDate is not null)
|
||||
{
|
||||
_startTextBox?.SetValue(TextBox.TextProperty, SelectedStartDate.Value.ToString(DisplayFormat ?? "yyyy-MM-dd"));
|
||||
}
|
||||
if (SelectedEndDate is not null)
|
||||
{
|
||||
_endTextBox?.SetValue(TextBox.TextProperty, SelectedEndDate.Value.ToString(DisplayFormat ?? "yyyy-MM-dd"));
|
||||
}
|
||||
|
||||
if (SelectedStartDate is null)
|
||||
{
|
||||
_startCalendar?.ClearSelection();
|
||||
}
|
||||
if(SelectedEndDate is null)
|
||||
{
|
||||
_endCalendar?.ClearSelection();
|
||||
}
|
||||
if(SelectedStartDate is not null && SelectedEndDate is not null)
|
||||
{
|
||||
_startCalendar?.MarkDates(SelectedStartDate, SelectedEndDate);
|
||||
_endCalendar?.MarkDates(SelectedStartDate, SelectedEndDate);
|
||||
}
|
||||
else if(SelectedStartDate is not null)
|
||||
{
|
||||
_startCalendar?.MarkDates(SelectedStartDate, SelectedStartDate);
|
||||
}
|
||||
else if(SelectedEndDate is not null)
|
||||
{
|
||||
_endCalendar?.MarkDates(SelectedEndDate, SelectedEndDate);
|
||||
}
|
||||
PseudoClasses.Set(PseudoClassName.PC_Empty, SelectedStartDate is null && SelectedEndDate is null);
|
||||
}
|
||||
|
||||
private void OnTextBoxLostFocus(object? sender, RoutedEventArgs e)
|
||||
@@ -381,4 +417,6 @@ public class DateRangePicker : DatePickerBase, IClearControl
|
||||
|
||||
SetCurrentValue(IsDropdownOpenProperty, true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user