Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
Validation.Errors (angefügte Eigenschaft)
Ruft eine Auflistung aller aktiven ValidationError-Objekte des gebundenen Elements ab.
Assembly: PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
Siehe Hinweise. Die Errors-Auflistung selbst kann nicht durch den Benutzer festgelegt werden, aber Sie können sie einer Vorlagendefinition für ein Steuerelement in XAML verwenden.
Eigenschaftswert
Typ: System.Collections.ObjectModel.ReadOnlyObservableCollection<ValidationError>Eine schreibgeschützte Auflistung aller aktiven ValidationError-Objekte des gebundenen Elements. Der Standardwert ist eine leere Auflistung.
Die Anwendung kann den Inhalt dieser Auflistung nicht ändern. Ein Beispiel für die Verwendung dieser angefügten Eigenschaft finden Sie im Beispielabschnitt.
Das WPF-Datenbindungsmodell ermöglicht Ihnen die Zuordnung von ValidationRules zum Binding-Objekt. Die Validierung findet während der Übertragung des Werts vom Bindungsziel zur Bindungsquelle statt, bevor der Konverter aufgerufen wird. In der folgenden Tabelle wird der Vaidierungsprozess beschrieben:
-
Wird ein Wert von der Zieleigenschaft zur Quelleigenschaft übertragen, entfernt das Datenbindungsmodul zuerst jeden ValidationError, der möglicherweise zur angefügten Eigenschaft Validation.Errors des gebundenen Elements hinzugefügt wurde. Dann überprüft es, ob benutzerdefinierte ValidationRules für diese Binding definiert wurden. Falls ja, ruft das Modul die Validate-Methode für jede der ValidationRules auf, bis eine der Regeln einen Fehler zurückgibt oder alle Regeln erfolgreich überprüft wurden.
-
Wird eine benutzerdefinierte Regel nicht erfolgreich überprüft, erstellt das Bindungsmodul ein ValidationError-Objekt und fügt es zur Validation.Errors-Auflistung des gebundenen Elements hinzu. Wenn Validation.Errors nicht leer ist, wird die angefügte Eigenschaft Validation.HasError des Elements auf true festgelegt. Wenn außerdem die NotifyOnValidationError-Eigenschaft der Binding auf true festgelegt ist, löst das Bindungsmodul das angefügte Ereignis Validation.Error des Elements aus.
-
Wenn alle Regeln erfolgreich verarbeitet werden, ruft das Bindungsmodul den Konverter auf, falls ein solcher vorhanden ist.
-
Wird der Konverter erfolgreich ausgeführt, ruft das Bindungsmodul den Setter der Quelleigenschaft auf.
-
Wenn mit der Bindung eine ExceptionValidationRule verbunden ist und in Schritt 4 eine Ausnahme ausgelöst wird, überprüft das Bindungsmodul, ob ein UpdateSourceExceptionFilter vorhanden ist. Sie können den UpdateSourceExceptionFilter-Rückruf verwenden, um einen benutzerdefinierten Handler zum Behandeln von Ausnahmen bereitzustellen. Wenn kein UpdateSourceExceptionFilter für die Binding angegeben ist, erstellt das Bindungsmodul einen ValidationError mit der Ausnahme und fügt ihn der Validation.Errors-Auflistung des gebundenen Elements hinzu.
Beachten Sie außerdem, dass durch eine gültige Wertübertragung (Ziel zu Quelle oder umgekehrt) die Validation.Errors angefügte Eigenschaft gelöscht wird.
Weitere Informationen über das Verhalten dieser Eigenschaft in MultiBinding-Szenarios finden Sie unter ValidationError.
Weitere Informationen finden Sie unter "Datenvalidierung" in Übersicht über Datenbindung.
This example shows how to use an ErrorTemplate and a style trigger to provide visual feedback to inform the user when an invalid value is entered, based on a custom validation rule.
The text content of the TextBox in the following example is bound to the Age property (of type int) of a binding source object named ods. The binding is set up to use a validation rule named AgeRangeRule so that if the user enters non-numeric characters or a value that is smaller than 21 or greater than 130, a red exclamation mark appears next to the text box and a tool tip with the error message appears when the user moves the mouse over the text box.
<TextBox Name="textBox1" Width="50" FontSize="15" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textBoxInError}" Grid.Row="1" Grid.Column="1" Margin="2"> <TextBox.Text> <Binding Path="Age" Source="{StaticResource ods}" UpdateSourceTrigger="PropertyChanged" > <Binding.ValidationRules> <c:AgeRangeRule Min="21" Max="130"/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>
The following example shows the implementation of AgeRangeRule, which inherits from ValidationRule and overrides the Validate method. The Int32.Parse() method is called on the value to make sure that it does not contain any invalid characters. The Validate method returns a ValidationResult that indicates if the value is valid based on whether an exception is caught during the parsing and whether the age value is outside of the lower and upper bounds.
public class AgeRangeRule : ValidationRule { private int _min; private int _max; public AgeRangeRule() { } public int Min { get { return _min; } set { _min = value; } } public int Max { get { return _max; } set { _max = value; } } public override ValidationResult Validate(object value, CultureInfo cultureInfo) { int age = 0; try { if (((string)value).Length > 0) age = Int32.Parse((String)value); } catch (Exception e) { return new ValidationResult(false, "Illegal characters or " + e.Message); } if ((age < Min) || (age > Max)) { return new ValidationResult(false, "Please enter an age in the range: " + Min + " - " + Max + "."); } else { return new ValidationResult(true, null); } } }
The following example shows the custom ControlTemplate validationTemplate that creates a red exclamation mark to notify the user of a validation error. Control templates are used to redefine the appearance of a control.
As shown in the following example, the ToolTip that shows the error message is created using the style named textBoxInError. If the value of HasError is true, the trigger sets the tool tip of the current TextBox to its first validation error. The RelativeSource is set to Self, referring to the current element.
<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}"> <Style.Triggers> <Trigger Property="Validation.HasError" Value="true"> <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/> </Trigger> </Style.Triggers> </Style>
For the complete example, see Binding Validation Sample.
Note that if you do not provide a custom ErrorTemplate the default error template appears to provide visual feedback to the user when there is a validation error. See "Data Validation" in Übersicht über Datenbindung for more information. Also, WPF provides a built-in validation rule that catches exceptions that are thrown during the update of the binding source property. For more information, see ExceptionValidationRule.
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.