Hallo,
ich nutze die ValidationRule in WPF um die Daten aus dem DataGrid zu Validieren.
Jetzt habe ich das Problem das ich nicht weis wie ich auf die einzelnen Spalten reagieren soll.
In XAML ist es so implementiert:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| <DataGrid.Resources> <Style x:Key="errorStyle" TargetType="{x:Type TextBox}"> <Setter Property="Padding" Value="-2"/> <Style.Triggers> <Trigger Property="Validation.HasError" Value="True"> <Setter Property="Background" Value="Red"/> <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/> </Trigger> </Style.Triggers> </Style> </DataGrid.Resources> |
und so binde ich dieses Style an meine DataGridTextColumn:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9:
| <DataGridTextColumn Header="Name" EditingElementStyle="{StaticResource errorStyle}"> <DataGridTextColumn.Binding> <Binding Path="NAME" ValidatesOnExceptions="True"> <Binding.ValidationRules> <local:ValidationObject></local:ValidationObject> </Binding.ValidationRules> </Binding> </DataGridTextColumn.Binding> </DataGridTextColumn> |
Ich möchte natürlich jede Spalte im DataGrid Validieren mit verschiedenen Kriterien.
Die ValidationObject-Klasse sieht so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| class ValidationObject : ValidationRule {
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { ValidationResult retval = null;
if (string.IsNullOrWhiteSpace(value.ToString())) { retval = new ValidationResult(false, "Pflichtfeld!"); } else { retval = ValidationResult.ValidResult; } return retval; } } |
Wie kann ich in der Klasse unterscheiden welche Zelle gerade Validiert werden soll?
Ich möchte folgendes erreichen:
z.B. wenn Spalte a 1 eingegeben wird muss Spalte b mit 0 befüllt werden und so weiter....
Die Daten im DataGrid kommen aus einem DataTable.
Danke für eure Hilfe
Gruß,
Schoenewelt
Moderiert von
Christian S.: XML-Tags hinzugefügt
Moderiert von
Christian S.: C#-Tags hinzugefügt