Freigeben über


Gewusst wie: Implementieren von Validierungslogik für benutzerdefinierte Objekte

Aktualisiert: November 2007

In diesem Beispiel wird gezeigt, wie Sie Validierungslogik für ein benutzerdefiniertes Objekt implementieren und anschließend daran binden.

Beispiel

Sie können Validierungslogik auf der Geschäftsebene zur Verfügung stellen, wenn das Quellobjekt IDataErrorInfo implementiert, wie im folgenden Beispiel veranschaulicht:

public class Person : IDataErrorInfo
{
    private int age;

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public string Error
    {
        get
        {
            return null;
        }
    }

    public string this[string name]
    {
        get
        {
            string result = null;

            if (name == "Age")
            {
                if (this.age < 0 || this.age > 150)
                {
                    result = "Age must not be less than 0 or greater than 150.";
                }
            }
            return result;
        }
    }
}

Im folgenden Beispiel wird die Texteigenschaft des Textfeldes an die Age-Eigenschaft des Person-Objekts gebunden, das für die Bindung über eine in x:Keydata angegebene Ressourcendeklaration zur Verfügung gestellt wurde. DataErrorValidationRule sucht von der IDataErrorInfo-Implementierung ausgelöste Validierungsfehler.

<TextBox Style="{StaticResource textBoxInError}">
    <TextBox.Text>
        <!--By setting ValidatesOnExceptions to True, it checks for exceptions
        that are thrown during the update of the source property.
        An alternative syntax is to add <ExceptionValidationRule/> within
        the <Binding.ValidationRules> section.-->
        <Binding Path="Age" Source="{StaticResource data}"
                 ValidatesOnExceptions="True"
                 UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <!--DataErrorValidationRule checks for validation 
                    errors raised by the IDataErrorInfo object.-->
                <!--Alternatively, you can set ValidationOnDataErrors="True" on the Binding.-->
                <DataErrorValidationRule/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

Alternativ zur Verwendung von DataErrorValidationRule können Sie die ValidatesOnDataErrors-Eigenschaft auf true festlegen.

Das vollständige Beispiel finden Sie unter Beispiel für die Validierung auf Geschäftsebene.

Siehe auch

Aufgaben

Gewusst wie: Implementieren der Bindungsvalidierung

Referenz

ExceptionValidationRule

Weitere Ressourcen

Beispiel zur Datenbindung

Gewusst-wie-Themen zur Datenbindung