refactor: DateTimePicker and TimePicker formatting.
Improved code formatting and consistency in DateTimePicker.cs and TimePicker.cs by splitting long lines and enhancing readability. Also fixed null handling and text synchronization for selected values in TimePicker.
This commit is contained in:
1 parent
d7b4361c49
commit
dd6c83a535
2 files changed
+80
-57
No files matched your search
@@ -75,8 +75,10 @@ public class DateTimePicker : Control
|
||||
static DateTimePicker()
|
||||
{
|
||||
EventManager.RegisterClassHandler(typeof(DateTimePicker), GotFocusEvent, new RoutedEventHandler(OnGotFocus));
|
||||
KeyboardNavigation.TabNavigationProperty.OverrideMetadata(typeof(DateTimePicker), new FrameworkPropertyMetadata(KeyboardNavigationMode.Once));
|
||||
KeyboardNavigation.IsTabStopProperty.OverrideMetadata(typeof(DateTimePicker), new FrameworkPropertyMetadata(ValueBoxes.FalseBox));
|
||||
KeyboardNavigation.TabNavigationProperty.OverrideMetadata(typeof(DateTimePicker),
|
||||
new FrameworkPropertyMetadata(KeyboardNavigationMode.Once));
|
||||
KeyboardNavigation.IsTabStopProperty.OverrideMetadata(typeof(DateTimePicker),
|
||||
new FrameworkPropertyMetadata(ValueBoxes.FalseBox));
|
||||
}
|
||||
|
||||
public DateTimePicker()
|
||||
@@ -111,7 +113,9 @@ public class DateTimePicker : Control
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DisplayDateTimeProperty = DependencyProperty.Register(
|
||||
nameof(DisplayDateTime), typeof(DateTime), typeof(DateTimePicker), new FrameworkPropertyMetadata(DateTime.Now, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, null, CoerceDisplayDateTime));
|
||||
nameof(DisplayDateTime), typeof(DateTime), typeof(DateTimePicker),
|
||||
new FrameworkPropertyMetadata(DateTime.Now, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, null,
|
||||
CoerceDisplayDateTime));
|
||||
|
||||
private static object CoerceDisplayDateTime(DependencyObject d, object value)
|
||||
{
|
||||
@@ -128,7 +132,9 @@ public class DateTimePicker : Control
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty IsDropDownOpenProperty = DependencyProperty.Register(
|
||||
nameof(IsDropDownOpen), typeof(bool), typeof(DateTimePicker), new FrameworkPropertyMetadata(ValueBoxes.FalseBox, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnIsDropDownOpenChanged, OnCoerceIsDropDownOpen));
|
||||
nameof(IsDropDownOpen), typeof(bool), typeof(DateTimePicker),
|
||||
new FrameworkPropertyMetadata(ValueBoxes.FalseBox, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
|
||||
OnIsDropDownOpenChanged, OnCoerceIsDropDownOpen));
|
||||
|
||||
private static object OnCoerceIsDropDownOpen(DependencyObject d, object baseValue) =>
|
||||
d is DateTimePicker
|
||||
@@ -165,7 +171,9 @@ public class DateTimePicker : Control
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty SelectedDateTimeProperty = DependencyProperty.Register(
|
||||
nameof(SelectedDateTime), typeof(DateTime?), typeof(DateTimePicker), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnSelectedDateTimeChanged, CoerceSelectedDateTime));
|
||||
nameof(SelectedDateTime), typeof(DateTime?), typeof(DateTimePicker),
|
||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
|
||||
OnSelectedDateTimeChanged, CoerceSelectedDateTime));
|
||||
|
||||
private static object CoerceSelectedDateTime(DependencyObject d, object value)
|
||||
{
|
||||
@@ -185,7 +193,6 @@ public class DateTimePicker : Control
|
||||
}
|
||||
else
|
||||
{
|
||||
// 修复:当 SelectedDateTime 为 null 时,清空文本框
|
||||
dp.SetTextInternal(string.Empty);
|
||||
}
|
||||
|
||||
@@ -202,7 +209,8 @@ public class DateTimePicker : Control
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
|
||||
nameof(Text), typeof(string), typeof(DateTimePicker), new FrameworkPropertyMetadata(string.Empty, OnTextChanged));
|
||||
nameof(Text), typeof(string), typeof(DateTimePicker),
|
||||
new FrameworkPropertyMetadata(string.Empty, OnTextChanged));
|
||||
|
||||
private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
@@ -333,7 +341,8 @@ public class DateTimePicker : Control
|
||||
{
|
||||
_textBox.SetBinding(SelectionBrushProperty, new Binding(SelectionBrushProperty.Name) { Source = this });
|
||||
#if !(NET40 || NET45 || NET451 || NET452 || NET46 || NET461 || NET462 || NET47 || NET471 || NET472)
|
||||
_textBox.SetBinding(SelectionTextBrushProperty, new Binding(SelectionTextBrushProperty.Name) { Source = this });
|
||||
_textBox.SetBinding(SelectionTextBrushProperty,
|
||||
new Binding(SelectionTextBrushProperty.Name) { Source = this });
|
||||
#endif
|
||||
_textBox.SetBinding(SelectionOpacityProperty, new Binding(SelectionOpacityProperty.Name) { Source = this });
|
||||
_textBox.SetBinding(CaretBrushProperty, new Binding(CaretBrushProperty.Name) { Source = this });
|
||||
@@ -407,7 +416,8 @@ public class DateTimePicker : Control
|
||||
|
||||
private void CalendarWithClock_Confirmed() => TogglePopup();
|
||||
|
||||
private void CalendarWithClock_SelectedDateTimeChanged(object sender, FunctionEventArgs<DateTime?> e) => SelectedDateTime = e.Info;
|
||||
private void CalendarWithClock_SelectedDateTimeChanged(object sender, FunctionEventArgs<DateTime?> e) =>
|
||||
SelectedDateTime = e.Info;
|
||||
|
||||
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
|
||||
{
|
||||
@@ -450,29 +460,29 @@ public class DateTimePicker : Control
|
||||
switch (e.Key)
|
||||
{
|
||||
case Key.System:
|
||||
{
|
||||
switch (e.SystemKey)
|
||||
{
|
||||
switch (e.SystemKey)
|
||||
case Key.Down:
|
||||
{
|
||||
case Key.Down:
|
||||
{
|
||||
if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt)
|
||||
{
|
||||
TogglePopup();
|
||||
return true;
|
||||
}
|
||||
if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt)
|
||||
{
|
||||
TogglePopup();
|
||||
return true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Key.Enter:
|
||||
{
|
||||
SetSelectedDateTime();
|
||||
return true;
|
||||
}
|
||||
{
|
||||
SetSelectedDateTime();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -593,10 +603,10 @@ public class DateTimePicker : Control
|
||||
|
||||
if (SelectedDateTime != null)
|
||||
{
|
||||
var newtext = DateTimeToString(SelectedDateTime.Value);
|
||||
SafeSetText(newtext);
|
||||
SafeSetText(DateTimeToString(SelectedDateTime.Value));
|
||||
return SelectedDateTime;
|
||||
}
|
||||
|
||||
SafeSetText(DateTimeToString(DisplayDateTime));
|
||||
return DisplayDateTime;
|
||||
}
|
||||
@@ -625,7 +635,6 @@ public class DateTimePicker : Control
|
||||
}
|
||||
|
||||
var d = SetTextBoxValue(s);
|
||||
// 修复:使用静态的 Equals 方法进行安全的 null 比较
|
||||
if (!Equals(SelectedDateTime, d))
|
||||
{
|
||||
SetCurrentValue(SelectedDateTimeProperty, d);
|
||||
@@ -640,7 +649,6 @@ public class DateTimePicker : Control
|
||||
}
|
||||
else
|
||||
{
|
||||
// 修复:确保文本框同步清空
|
||||
SetTextInternal(string.Empty);
|
||||
}
|
||||
}
|
||||
@@ -648,7 +656,6 @@ public class DateTimePicker : Control
|
||||
else
|
||||
{
|
||||
var d = SetTextBoxValue(_defaultText);
|
||||
// 修复:使用静态的 Equals 方法进行安全的 null 比较
|
||||
if (!Equals(SelectedDateTime, d))
|
||||
{
|
||||
SetCurrentValue(SelectedDateTimeProperty, d);
|
||||
|
||||
@@ -73,8 +73,10 @@ public class TimePicker : Control
|
||||
static TimePicker()
|
||||
{
|
||||
EventManager.RegisterClassHandler(typeof(TimePicker), GotFocusEvent, new RoutedEventHandler(OnGotFocus));
|
||||
KeyboardNavigation.TabNavigationProperty.OverrideMetadata(typeof(TimePicker), new FrameworkPropertyMetadata(KeyboardNavigationMode.Once));
|
||||
KeyboardNavigation.IsTabStopProperty.OverrideMetadata(typeof(TimePicker), new FrameworkPropertyMetadata(ValueBoxes.FalseBox));
|
||||
KeyboardNavigation.TabNavigationProperty.OverrideMetadata(typeof(TimePicker),
|
||||
new FrameworkPropertyMetadata(KeyboardNavigationMode.Once));
|
||||
KeyboardNavigation.IsTabStopProperty.OverrideMetadata(typeof(TimePicker),
|
||||
new FrameworkPropertyMetadata(ValueBoxes.FalseBox));
|
||||
}
|
||||
|
||||
public TimePicker()
|
||||
@@ -115,7 +117,8 @@ public class TimePicker : Control
|
||||
nameof(DisplayTime),
|
||||
typeof(DateTime),
|
||||
typeof(TimePicker),
|
||||
new FrameworkPropertyMetadata(DateTime.Now, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, null, CoerceDisplayTime));
|
||||
new FrameworkPropertyMetadata(DateTime.Now, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, null,
|
||||
CoerceDisplayTime));
|
||||
|
||||
private static object CoerceDisplayTime(DependencyObject d, object value)
|
||||
{
|
||||
@@ -139,7 +142,8 @@ public class TimePicker : Control
|
||||
nameof(IsDropDownOpen),
|
||||
typeof(bool),
|
||||
typeof(TimePicker),
|
||||
new FrameworkPropertyMetadata(ValueBoxes.FalseBox, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnIsDropDownOpenChanged, OnCoerceIsDropDownOpen));
|
||||
new FrameworkPropertyMetadata(ValueBoxes.FalseBox, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
|
||||
OnIsDropDownOpenChanged, OnCoerceIsDropDownOpen));
|
||||
|
||||
private static object OnCoerceIsDropDownOpen(DependencyObject d, object baseValue)
|
||||
{
|
||||
@@ -183,7 +187,8 @@ public class TimePicker : Control
|
||||
nameof(SelectedTime),
|
||||
typeof(DateTime?),
|
||||
typeof(TimePicker),
|
||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnSelectedTimeChanged, CoerceSelectedTime));
|
||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
|
||||
OnSelectedTimeChanged, CoerceSelectedTime));
|
||||
|
||||
private static void OnSelectedTimeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
@@ -194,6 +199,10 @@ public class TimePicker : Control
|
||||
var time = dp.SelectedTime.Value;
|
||||
dp.SetTextInternal(dp.DateTimeToString(time));
|
||||
}
|
||||
else
|
||||
{
|
||||
dp.SetTextInternal(string.Empty);
|
||||
}
|
||||
|
||||
dp.RaiseEvent(new FunctionEventArgs<DateTime?>(SelectedTimeChangedEvent, dp)
|
||||
{
|
||||
@@ -306,7 +315,9 @@ public class TimePicker : Control
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ClockProperty = DependencyProperty.Register(
|
||||
nameof(Clock), typeof(ClockBase), typeof(TimePicker), new FrameworkPropertyMetadata(default(Clock), FrameworkPropertyMetadataOptions.NotDataBindable, OnClockChanged));
|
||||
nameof(Clock), typeof(ClockBase), typeof(TimePicker),
|
||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.NotDataBindable,
|
||||
OnClockChanged));
|
||||
|
||||
private static void OnClockChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
@@ -384,7 +395,8 @@ public class TimePicker : Control
|
||||
{
|
||||
_textBox.SetBinding(SelectionBrushProperty, new Binding(SelectionBrushProperty.Name) { Source = this });
|
||||
#if !(NET40 || NET45 || NET451 || NET452 || NET46 || NET461 || NET462 || NET47 || NET471 || NET472)
|
||||
_textBox.SetBinding(SelectionTextBrushProperty, new Binding(SelectionTextBrushProperty.Name) { Source = this });
|
||||
_textBox.SetBinding(SelectionTextBrushProperty,
|
||||
new Binding(SelectionTextBrushProperty.Name) { Source = this });
|
||||
#endif
|
||||
_textBox.SetBinding(SelectionOpacityProperty, new Binding(SelectionOpacityProperty.Name) { Source = this });
|
||||
_textBox.SetBinding(CaretBrushProperty, new Binding(CaretBrushProperty.Name) { Source = this });
|
||||
@@ -488,29 +500,29 @@ public class TimePicker : Control
|
||||
switch (e.Key)
|
||||
{
|
||||
case Key.System:
|
||||
{
|
||||
switch (e.SystemKey)
|
||||
{
|
||||
switch (e.SystemKey)
|
||||
case Key.Down:
|
||||
{
|
||||
case Key.Down:
|
||||
{
|
||||
if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt)
|
||||
{
|
||||
TogglePopup();
|
||||
return true;
|
||||
}
|
||||
if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt)
|
||||
{
|
||||
TogglePopup();
|
||||
return true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Key.Enter:
|
||||
{
|
||||
SetSelectedTime();
|
||||
return true;
|
||||
}
|
||||
{
|
||||
SetSelectedTime();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -635,10 +647,10 @@ public class TimePicker : Control
|
||||
|
||||
if (SelectedTime != null)
|
||||
{
|
||||
var newtext = DateTimeToString((DateTime) SelectedTime);
|
||||
SafeSetText(newtext);
|
||||
SafeSetText(DateTimeToString((DateTime) SelectedTime));
|
||||
return SelectedTime;
|
||||
}
|
||||
|
||||
SafeSetText(DateTimeToString(DisplayTime));
|
||||
return DisplayTime;
|
||||
}
|
||||
@@ -662,7 +674,7 @@ public class TimePicker : Control
|
||||
}
|
||||
|
||||
var d = SetTextBoxValue(s);
|
||||
if (!SelectedTime.Equals(d))
|
||||
if (!Equals(SelectedTime, d))
|
||||
{
|
||||
SetCurrentValue(SelectedTimeProperty, d);
|
||||
SetCurrentValue(DisplayTimeProperty, d);
|
||||
@@ -674,12 +686,16 @@ public class TimePicker : Control
|
||||
{
|
||||
SetCurrentValue(SelectedTimeProperty, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetTextInternal(string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var d = SetTextBoxValue(_defaultText);
|
||||
if (!SelectedTime.Equals(d))
|
||||
if (!Equals(SelectedTime, d))
|
||||
{
|
||||
SetCurrentValue(SelectedTimeProperty, d);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user