Browse Source

fix Validation for SelectedDateProperty not working

pull/7308/head
Tim U 5 years ago
parent
commit
1604be4784
  1. 11
      src/Avalonia.Controls/Calendar/CalendarDatePicker.cs
  2. 6
      src/Avalonia.Themes.Fluent/Controls/CalendarDatePicker.xaml

11
src/Avalonia.Controls/Calendar/CalendarDatePicker.cs

@ -185,7 +185,8 @@ namespace Avalonia.Controls
AvaloniaProperty.RegisterDirect<CalendarDatePicker, DateTime?>( AvaloniaProperty.RegisterDirect<CalendarDatePicker, DateTime?>(
nameof(SelectedDate), nameof(SelectedDate),
o => o.SelectedDate, o => o.SelectedDate,
(o, v) => o.SelectedDate = v); (o, v) => o.SelectedDate = v,
enableDataValidation: true);
public static readonly StyledProperty<CalendarDatePickerFormat> SelectedDateFormatProperty = public static readonly StyledProperty<CalendarDatePickerFormat> SelectedDateFormatProperty =
AvaloniaProperty.Register<CalendarDatePicker, CalendarDatePickerFormat>( AvaloniaProperty.Register<CalendarDatePicker, CalendarDatePickerFormat>(
@ -533,13 +534,11 @@ namespace Avalonia.Controls
} }
} }
protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change) protected override void UpdateDataValidation<T>(AvaloniaProperty<T> property, BindingValue<T> value)
{ {
base.OnPropertyChanged(change); if (property == SelectedDateProperty)
if (change.Property == SelectedDateProperty)
{ {
DataValidationErrors.SetError(this, change.NewValue.Error); DataValidationErrors.SetError(this, value.Error);
} }
} }

6
src/Avalonia.Themes.Fluent/Controls/CalendarDatePicker.xaml

@ -33,6 +33,7 @@
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate> <ControlTemplate>
<DataValidationErrors>
<Grid ColumnDefinitions="*,Auto"> <Grid ColumnDefinitions="*,Auto">
<Grid.Styles> <Grid.Styles>
@ -107,7 +108,6 @@
Padding="{TemplateBinding Padding}" Padding="{TemplateBinding Padding}"
Watermark="{TemplateBinding Watermark}" Watermark="{TemplateBinding Watermark}"
UseFloatingWatermark="{TemplateBinding UseFloatingWatermark}" UseFloatingWatermark="{TemplateBinding UseFloatingWatermark}"
DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
Grid.Column="0"/> Grid.Column="0"/>
@ -136,8 +136,12 @@
DisplayDateEnd="{TemplateBinding DisplayDateEnd}" /> DisplayDateEnd="{TemplateBinding DisplayDateEnd}" />
</Popup> </Popup>
</Grid> </Grid>
</DataValidationErrors>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
</Style> </Style>
<Style Selector="CalendarDatePicker:error TextBox /template/ Border#PART_BorderElement">
<Setter Property="BorderBrush" Value="{DynamicResource SystemControlErrorTextForegroundBrush}"/>
</Style>
</Styles> </Styles>

Loading…
Cancel
Save