2010-05-21 7 views
1

Nous implémentons une application métier WPF utilisant MVVM. Actuellement, nous essayons de déterminer la meilleure façon d'afficher les erreurs de validation pour DataGrids. À l'heure actuelle, nous essayons de le faire comme ceci:WPF DataGrid - Recommandations de validation

1) Une commande de vue de l'utilisateur contient un DataGrid lié à un EntityCollection d'objets Entity Framework situés dans le ViewModel

2) associée ViewModel implments l'interface IDataErrorInfo. Dans le ViewModel il y a les propriétés normales, y compris une propriété pour la mise en œuvre IDataErrorInfo.Item

3) La propriété qui met en œuvre IDataErrorInfo.Item appelle la validation du modèle sous-jacent afin de déterminer s'il y a des problèmes de validation

Cela fonctionne bien pour toute zone de texte ou zone de liste déroulante sur la vue - validatiosn sont en cours de traitement comme prévu. Mais avec le DataGrid nous sommes perturbés - peu importe ce que nous avons essayé, la validation ne se fera pas. Actuellement, il est défini comme ceci:

<DataGrid x:Name="dgWikiNames" ItemsSource="{Binding Wiki_Names, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnSourceUpdated=True}" AutoGenerateColumns="False"> 
         <DataGrid.RowValidationRules> 
          <DataErrorValidationRule ValidationStep="UpdatedValue"/>        
         </DataGrid.RowValidationRules> 
         <DataGrid.Columns> 
          <DataGridTextColumn Header="First Name"> 
           <DataGridTextColumn.Binding> 
            <Binding Path="First_Name" ValidatesOnDataErrors="True"> 
             <Binding.ValidationRules> 
              <DataErrorValidationRule/> 
              <!--<local:CellDataInfoValidationRule ValidationStep="UpdatedValue"/>--> 
             </Binding.ValidationRules> 
            </Binding> 
           </DataGridTextColumn.Binding> 
          </DataGridTextColumn> 
          <DataGridTextColumn Header="Is Primary" Binding="{Binding Primary_Flag}"/> 
         </DataGrid.Columns> 
        </DataGrid> 

Si quelqu'un a des pointeurs ou des recommandations, nous l'apprécierions. Merci

Répondre

1

Ajouter ce qui suit à votre reliure:

ValidatesOnDataErrors="True" NotifyOnValidationError="True"