2017-09-06 6 views
0

J'utilise le Xceed DateTimePicker comme le contrôle dans un DataGrid WPF pour toutes les colonnes qui sont liés à une propriété de date. Chacune des ces colonnes est définie comme suit:Comment réparer Xceed DateTimePicker ArgumentOutOfRangeException Erreur

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

Je ne pense pas qu'il est pertinent à ma question, mais pour être complet, voici le style pour les ramasseurs:

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

Cette Fonctionne pour les cellules DataGrid qui sont déjà remplies ou lorsque j'entre des données dans une nouvelle ligne. Cependant, lorsque je clique sur une cellule vide dans une ligne existante, je reçois l'exception suivante:

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

Pourquoi l'erreur seulement quand je suis entrer des données dans une ligne existante? Aucun code-behind n'est en cours d'exécution lorsque cette exception se produit, donc je ne sais pas où chercher le problème.

Répondre

1

Puisque vous avez défini la propriété Minimum-2017-01-01, vous devez également définir la valeur par défaut à la même date:

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

Vous obtiendrez un ArgumentOutOfRangeException si la valeur par défaut ou la valeur est inférieure à la valeur minimale et cela a un sens parfait.

+0

observation Excellente - I a ajouté la valeur par défaut pour le style. Cependant, j'ai la même exception! – SezMe

+0

Sur quelle cellule clique-tu quand tu as l'exception? S'il vous plaît fournir un repo de votre problème: https://stackoverflow.com/help/mcve – mm8

+0

OK, laissez-moi mettre en place un échantillon. – SezMe