Quelqu'un at-il un exemple de validation de la ligne croisée pour WPF Datagrid. La validation au niveau de la cellule et la validation Rowlevel ne répondent pas à mes exigences. J'essaie de rester avec MVVM autant que possible. ma dernière option est d'utiliser le code derrière. Donc, fondamentalement, j'ai besoin d'accéder à la Itemssource quand quelque chose se passe dans la grille. Toute aide est très appréciée. Merci -ReyWPF Datagrid Validation croisée des lignes
Répondre
sur le code derrière ajouter une classe partielle à chaque table.
La propriété [HasNoError] est de retour vrai s'il n'y a pas d'erreurs
La propriété [Error] est renvoyer les erreurs sous forme de chaîne
if(tablename.HasNoError)
{
// do your logic
}
else
{
// display tablename.Error
}
Du côté XAML utiliser la liaison
<DataGridTextColumn Binding="{Binding Path=ActualFieldName1, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged }" Header=" ActualFieldName1" />
et ceci est l'exemple de classe utilisant IDataErrorInfo-
public partial class tablename : IDataErrorInfo
{
private Dictionary<string, string> errorCollection = new Dictionary<string, string>();
public bool HasNoError
{
get
{
return string.IsNullOrWhiteSpace(Error);
}
}
public string Error
{
get
{
if (errorCollection.Count == 0)
return null;
StringBuilder errorList = new StringBuilder();
var errorMessages = errorCollection.Values.GetEnumerator();
while (errorMessages.MoveNext())
errorList.AppendLine(errorMessages.Current);
return errorList.ToString();
}
}
public string this[string fieldName]
{
get
{
string result = null;
switch (fieldName)
{
case "ActualFieldName1":
if (string.IsNullOrWhiteSpace(this.ActualFieldName1))
{
result = "ActualFieldName1 is required.";
};
if (Other_Condition)
{
result = "Other Result";
};
break;
case "ActualFieldName2":
if (string.IsNullOrWhiteSpace(this.ActualFieldName2))
{
result = "ActualFieldName2 is required.";
};
if (Other_Condition)
{
result = "Other Result";
};
break;
// and so
}
if (result != null && !errorCollection.ContainsKey(fieldName))
errorCollection.Add(fieldName, result);
if (result == null && errorCollection.ContainsKey(fieldName))
errorCollection.Remove(fieldName);
return result;
}
}
}
Pour le rendre agréable ajouter un peu de style à cibler le modèle d'erreur voir l'exemple
<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Red" BorderThickness="1">
<Grid>
<AdornedElementPlaceholder x:Name="MyAdorner"/>
<Image Width="{Binding AdornedElement.ActualHeight, ElementName=MyAdorner}" Margin="0" ToolTip="{Binding AdornedElement.(Validation.Errors)[0].ErrorContent, ElementName=MyAdorner}" HorizontalAlignment="Right" VerticalAlignment="Center" Source="/Path/Exclamation.png" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Je crois que ci-dessus fonctionne pour la validation au niveau de la cellule. pour ma validation multirow, j'ai trouvé ce poste, http://stackoverflow.com/questions/1729414/wpf-datagrid-how-to-validate-multiple-rows-and-mark-all-invalid-ones et aussi je combine validation au niveau de la cellule pour afficher les cellules invalides. désolé je ne peux pas marquer votre réponse comme une réponse, car il ne donne pas une solution correcte à mon problème. – Manohar
- 1. validation croisée
- 2. WPF DataGrid - Recommandations de validation
- 3. Validation forcée; WPF, DataGrid, ObservableCollection
- 4. WPG DataGrid: Réorganisation des lignes?
- 5. Validation de colonne Force DataGrid (WPF)
- 6. WPF Datagrid/Datatable: grand nombre de lignes
- 7. DataGrid WPF: désactiver l'édition dans certaines lignes
- 8. WPF DataGrid - Détails des lignes dynamiques via le code
- 9. Nombre d'erreurs de validation de ligne WPF DataGrid
- 10. DataGrid: Danymically ajouter des lignes
- 11. WPF Datagrid ItemsSource
- 12. WPF toolkit datagrid
- 13. Afficher ComboBox sur l'édition de lignes Datagrid, WPF
- 14. Problème de datagrid WPF
- 15. WPF Toolkit DataGrid - Recherche uniquement les lignes visibles/actuellement visibles
- 16. WPF problèmes de règles de validation dans un DataGrid
- 17. Erreur de validation de DataGrid WPF non interceptée
- 18. Datagrid modifiable dans WPF
- 19. Spanning un enregistrement sur plusieurs lignes dans DataGrid WPF Toolkit
- 20. C#/WPF: DataGrid Toolkit - Transposer lignes et colonnes
- 21. WPF DataGrid: interdire la mise en évidence de plusieurs lignes
- 22. WPF DataGrid Dynamic Styling
- 23. ASP.NET DataGrid - DropDownListes dans des lignes séparées?
- 24. WPF DataGrid coller
- 25. WPF sélection DataGrid changé
- 26. Validation des éléments de collection dans WPF
- 27. WPF Grid et DataGrid dimensionnement
- 28. liaison WPF Datagrid à xml
- 29. Impossible d'ajouter des lignes à WPG DataGrid dans PowerShell
- 30. défilement lisse pour DataGrid WPF
vous utilisez Entity Framework? –
oui et c'est une application serveur client ... – Manohar