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