feat: fix DateTimePicker text modification issue.

This commit is contained in:
Dong Bin
2025-02-18 22:08:30 +08:00
parent 53b65f4eb7
commit 608695c44b

View File

@@ -76,6 +76,7 @@ public class DateTimePicker : DatePickerBase
private void OnSelectionChanged(AvaloniaPropertyChangedEventArgs<DateTime?> args) private void OnSelectionChanged(AvaloniaPropertyChangedEventArgs<DateTime?> args)
{ {
if (_fromText) return;
SyncSelectedDateToText(args.NewValue.Value); SyncSelectedDateToText(args.NewValue.Value);
} }
@@ -181,6 +182,8 @@ public class DateTimePicker : DatePickerBase
SetCurrentValue(IsDropdownOpenProperty, true); SetCurrentValue(IsDropdownOpenProperty, true);
} }
private bool _fromText = false;
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void OnTextChanged(object? sender, TextChangedEventArgs e) private void OnTextChanged(object? sender, TextChangedEventArgs e)
{ {
@@ -189,6 +192,8 @@ public class DateTimePicker : DatePickerBase
private void SetSelectedDate(bool fromText = false) private void SetSelectedDate(bool fromText = false)
{ {
var temp = _fromText;
_fromText = fromText;
if (string.IsNullOrEmpty(_textBox?.Text)) if (string.IsNullOrEmpty(_textBox?.Text))
{ {
SetCurrentValue(SelectedDateProperty, null); SetCurrentValue(SelectedDateProperty, null);
@@ -227,6 +232,7 @@ public class DateTimePicker : DatePickerBase
_timePickerPresenter?.SyncTime(null); _timePickerPresenter?.SyncTime(null);
} }
} }
_fromText = temp;
} }
private void OnTextBoxGetFocus(object? sender, GotFocusEventArgs e) private void OnTextBoxGetFocus(object? sender, GotFocusEventArgs e)