如何解决Xceed DateTimePicker ArgumentOutOfRangeException错误

如何解决Xceed DateTimePicker ArgumentOutOfRangeException错误

问题描述:

我正在使用Xceed DateTimePicker作为绑定到Date属性的所有列的wpf DataGrid中的控件。每个这些列的定义如下:如何解决Xceed DateTimePicker ArgumentOutOfRangeException错误

<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> 

我不认为这是有关我的问题,但为了完整起见,这里是采摘的造型:

<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> 

这适用于已填充数据网格的单元格或当我在新行中输入数据时使用。然而,当我现有的行中单击空白单元格,我得到以下异常:

System.ArgumentOutOfRangeException: 'SelectedDate value is not valid.' 

为什么只当我是错误的现有行中输入数据?当发生这种异常时,没有代码隐藏正在执行,所以我不知道在哪里寻找问题。

既然你已经在Minimum属性设置为2017-01-01,你也应该由默认值设定为相同的日期:

<Style TargetType="{x:Type tk:DateTimePicker}"> 
    <Setter Property="TextAlignment" Value="Center" /> 
    <Setter Property="Default" Value="2017-01-01" /> 
    <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> 

,你会得到ArgumentOutOfRangeException如果默认值,或值小于最小值这很有道理。

+0

优秀的观察 - 我将默认值添加到样式。但是,我得到同样的例外! – SezMe

+0

当您收到异常时,您点击了哪个单元格?请提供您的问题的回购:https://*.com/help/mcve – mm8

+0

好吧,让我把一个样本。 – SezMe