我使用 Xceed DateTimePicker 作为 wpf DataGrid 中所有绑定到 Date 属性的列的控件。这些列中的每一列定义如下:
<DataGrid.Columns>
<DataGridTemplateColumn
Header="Charge Date"
Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Path=ChargeDate, StringFormat=yyyy-MM-dd, Converter={StaticResource conDate}}"
HorizontalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<tk:DateTimePicker Value="{Binding Path=ChargeDate}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
我认为这与我的问题无关,但为了完整起见,这里是选择器的样式:
<Style TargetType="{x:Type tk:DateTimePicker}">
<Setter Property="TextAlignment" Value="Center" />
<Setter Property="Minimum" Value="2017-01-01" />
<Setter Property="DisplayDefaultValueOnEmptyText" Value="False" />
<Setter Property="ShowButtonSpinner" Value="False" />
<Setter Property="TimePickerVisibility" Value="Collapsed" />
<Setter Property="AutoCloseCalendar" Value="True" />
<Setter Property="Format" Value="Custom" />
<Setter Property="FormatString" Value="yyyy-MM-dd" />
</Style>
Run Code Online (Sandbox Code Playgroud)
这适用于已经填充的数据网格单元格或当我在新行中输入数据时。但是,当我单击现有行中的空单元格时,出现以下异常:
System.ArgumentOutOfRangeException: 'SelectedDate value is not valid.'
Run Code Online (Sandbox Code Playgroud)
为什么只有在现有行中输入数据时才会出现错误?发生此异常时没有执行任何代码隐藏,所以我不知道在哪里查找问题。