Autor Beitrag
schoenewelt
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 12.10.10 16:14 
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:

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

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

ausblenden 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 user profile iconChristian S.: XML-Tags hinzugefügt
Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt