fix: completely fix timepicker racing issue.
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Ursa.Controls;
|
||||
[TemplatePart(PART_Popup, typeof(Popup))]
|
||||
[TemplatePart(PART_TextBox, typeof(TextBox))]
|
||||
[TemplatePart(PART_Calendar, typeof(CalendarView))]
|
||||
[TemplatePart(PART_TimePicker, typeof(TimePicker))]
|
||||
[TemplatePart(PART_TimePicker, typeof(TimePickerPresenter))]
|
||||
public class DateTimePicker : DatePickerBase
|
||||
{
|
||||
public const string PART_Button = "PART_Button";
|
||||
@@ -85,14 +85,14 @@ public class DateTimePicker : DatePickerBase
|
||||
{
|
||||
_textBox?.SetValue(TextBox.TextProperty, null);
|
||||
_calendar?.ClearSelection();
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, null);
|
||||
_timePickerPresenter?.SyncTime(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
_textBox?.SetValue(TextBox.TextProperty,
|
||||
date.Value.ToString(DisplayFormat ?? CultureInfo.InvariantCulture.DateTimeFormat.FullDateTimePattern));
|
||||
_calendar?.MarkDates(date.Value.Date, date.Value.Date);
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, date.Value.TimeOfDay);
|
||||
_timePickerPresenter?.SyncTime(date.Value.TimeOfDay);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@ public class DateTimePicker : DatePickerBase
|
||||
var date = SelectedDate ?? DateTime.Now;
|
||||
_calendar.ContextDate = new CalendarContext(date.Year, date.Month);
|
||||
_calendar.UpdateDayButtons();
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, SelectedDate?.TimeOfDay);
|
||||
_timePickerPresenter?.SyncTime(SelectedDate?.TimeOfDay);
|
||||
}
|
||||
|
||||
SetCurrentValue(IsDropdownOpenProperty, true);
|
||||
@@ -193,7 +193,7 @@ public class DateTimePicker : DatePickerBase
|
||||
{
|
||||
SetCurrentValue(SelectedDateProperty, null);
|
||||
_calendar?.ClearSelection();
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, null);
|
||||
_timePickerPresenter?.SyncTime(null);
|
||||
}
|
||||
else if (DisplayFormat is null || DisplayFormat.Length == 0)
|
||||
{
|
||||
@@ -201,7 +201,7 @@ public class DateTimePicker : DatePickerBase
|
||||
{
|
||||
SetCurrentValue(SelectedDateProperty, defaultTime);
|
||||
_calendar?.MarkDates(defaultTime.Date, defaultTime.Date);
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, defaultTime.TimeOfDay);
|
||||
_timePickerPresenter?.SyncTime(defaultTime.TimeOfDay);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -217,14 +217,14 @@ public class DateTimePicker : DatePickerBase
|
||||
}
|
||||
|
||||
_calendar?.MarkDates(date.Date, date.Date);
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, date.TimeOfDay);
|
||||
_timePickerPresenter?.SyncTime(date.TimeOfDay);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCurrentValue(SelectedDateProperty, null);
|
||||
if (!fromText) _textBox?.SetValue(TextBox.TextProperty, null);
|
||||
_calendar?.ClearSelection();
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, null);
|
||||
_timePickerPresenter?.SyncTime(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -236,7 +236,7 @@ public class DateTimePicker : DatePickerBase
|
||||
var date = SelectedDate ?? DateTime.Today;
|
||||
_calendar.ContextDate = _calendar.ContextDate.With(date.Year, date.Month);
|
||||
_calendar.UpdateDayButtons();
|
||||
_timePickerPresenter?.SetValue(TimePickerPresenter.TimeProperty, date.TimeOfDay);
|
||||
_timePickerPresenter?.SyncTime(date.TimeOfDay);
|
||||
}
|
||||
|
||||
SetCurrentValue(IsDropdownOpenProperty, true);
|
||||
|
||||
Reference in New Issue
Block a user