Wpf 如何修复Xceed DateTimePicker ArgumentOutOfRangeException错误
我使用Xceed DateTimePicker作为wpf数据网格中绑定到日期属性的所有列的控件。这些列中的每一列的定义如下:Wpf 如何修复Xceed DateTimePicker ArgumentOutOfRangeException错误,wpf,datagrid,datetimepicker,xceed,Wpf,Datagrid,Datetimepicker,Xceed,我使用Xceed DateTimePicker作为wpf数据网格中绑定到日期属性的所有列的控件。这些列中的每一列的定义如下: <DataGrid.Columns> <DataGridTemplateColumn Header="Charge Date" Width="100"> <DataGridTemplateColumn.CellTemplate> <DataTemplate>
<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>
为什么只有在现有行中输入数据时才会出现错误?发生此异常时没有执行代码隐藏,因此我不知道从何处查找问题。由于您已将
最小值属性设置为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
,这非常合理。我也有同样的问题。要修复此问题,请将ClipValueToMinMax属性设置为“True”。这将防止值低于最小值/高于最大值,而不会引发异常
<xceed:DateTimePicker Value="{Binding DateTime}"
Minimum="{Binding DateTimeMinimum}"
Maximum="{Binding DateTimeMaximum}"
ClipValueToMinMax="True"/>
观察效果极佳-我为样式添加了默认值。然而,我得到了同样的例外!当您收到异常时,您正在单击哪个单元格?请提供你发行的债券的回购协议:好的,让我做一个样本。更新:我没有忘记这个问题。我已经将解决方案剥离到了最基本的部分,例如删除对数据库的所有调用,在这样做的过程中,我得到了许多尚未追踪到的绑定错误。但我还在努力。也许等我弄明白了,我会发现这里列出的问题。
<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>
<xceed:DateTimePicker Value="{Binding DateTime}"
Minimum="{Binding DateTimeMinimum}"
Maximum="{Binding DateTimeMaximum}"
ClipValueToMinMax="True"/>