Контекст
Приложение WPF MVVM, в котором мне нужно разрешить отображение и редактирование дат даты и времени из модели представления. Некоторые даты являются «независимыми», а некоторые - в DataGrid. Обработка ошибок (проверка диапазона и т. Д. c) осуществляется через INotifyDataErrorInfo и службу проверки. Я пишу даты с ошибками, как это, чтобы выделить их и предоставить всплывающую подсказку с сообщением об ошибке:
<Style x:Key="ErrorStyle" TargetType="{x:Type Control}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip DataContext="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget}">
<ItemsControl ItemsSource="{Binding Path=(Validation.Errors)}" DisplayMemberPath="ErrorContent" />
</ToolTip>
</Setter.Value>
</Setter>
<Setter Property="Background" Value="Salmon"/>
<Setter Property="Height" Value="20"/>
</Trigger>
</Style.Triggers>
</Style>
Issue
Применение к «свободному положению» даты все работает нормально, например
<TextBox x:Name="dueDate"
Style="{StaticResource ErrorStyle}"
Text="{Binding Path=DueDate,
StringFormat=d, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture},
ValidatesOnNotifyDataErrors=True}">
</TextBox>
Это работает и , когда происходит ошибка преобразователя значений (например, неверный формат даты) или ошибка, обнаруженная службой проверки .
Однако для дат в DataGrid все иначе:
<DataGridTemplateColumn Header="Delivery date" SortMemberPath="DeliveryDate">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=DeliveryDate, StringFormat=d, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}"
Style="{StaticResource ErrorStyle}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding DeliveryDate, Mode=TwoWay, UpdateSourceTrigger=LostFocus,
StringFormat=d,
ConverterCulture={x:Static gl:CultureInfo.CurrentCulture},
ValidatesOnNotifyDataErrors=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Здесь мой стиль применяется для ошибок, обнаруженных службой проверки. Но, для ошибок преобразователя значений, я получаю красную окантовку, подсказки нет и все остальные поля отключены. Я полагаю, что по умолчанию такие ошибки встречаются по умолчанию.
Вопрос
Как я могу получить, чтобы моя ошибка форматирования даты в DataGrid работала так же, как и для моих свободных дат?