Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Binding.ValidatesOnDataErrors Property

Definition

Namespace:
System.Windows.Data
Assembly:
PresentationFramework.dll

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Gets or sets a value that indicates whether to include the DataErrorValidationRule.

public:
 property bool ValidatesOnDataErrors { bool get(); void set(bool value); };
public bool ValidatesOnDataErrors { get; set; }
member this.ValidatesOnDataErrors : bool with get, set
Public Property ValidatesOnDataErrors As Boolean

Property Value

true to include the DataErrorValidationRule; otherwise, false.

Examples

The following examples uses IDataErrorInfo and ValidatesOnDataErrors to validate user input in a TextBox. The first example creates a data type that implements IDataErrorInfo to report validation errors.

public class PersonImplementsIDataErrorInfo : IDataErrorInfo
{
 private int age;

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

 public string Error
 {
 get
 {
 return "";
 }
 }

 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;
 }
 }
}
Public Class PersonImplementsIDataErrorInfo
 Implements System.ComponentModel.IDataErrorInfo
 Private m_age As Integer

 Public Property Age() As Integer
 Get
 Return m_age
 End Get
 Set(ByVal value As Integer)
 m_age = value
 End Set
 End Property

 Public ReadOnly Property [Error]() As String _
 Implements System.ComponentModel.IDataErrorInfo.Error
 Get
 Return ""
 End Get
 End Property

 Default Public ReadOnly Property Item(ByVal name As String) As String _
 Implements System.ComponentModel.IDataErrorInfo.Item
 Get
 Dim result As String = Nothing

 If name = "Age" Then
 If Me.m_age < 0 OrElse Me.m_age > 150 Then
 result = "Age must not be less than 0 or greater than 150."
 End If
 End If
 Return result
 End Get
 End Property
End Class

The following example binds the Age property to the TextBox and sets ValidatesOnDataErrors to true on the Binding. When the user enters an invalid value, a red border appears in the TextBox and the ToolTip reports the error message.

<StackPanel Margin="20">
 <StackPanel.Resources>
 <src:PersonImplementsIDataErrorInfo x:Key="data"/>
 
 <!--The tool tip for the TextBox to display the validation error message.-->
 <Style x:Key="textBoxInError" TargetType="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>

 </StackPanel.Resources>
 <TextBlock>Enter your age:</TextBlock>
 <TextBox Style="{StaticResource textBoxInError}">
 <TextBox.Text>
 <!--ValidatesOnDataErrors to is set to True, so the Binding
 checks for errors raised by the IDataErrorInfo object.
 An alternative syntax is to add <DataErrorValidationRule/> within
 the <Binding.ValidationRules> section.-->
 <Binding Path="Age" Source="{StaticResource data}"
 ValidatesOnDataErrors="True"
 UpdateSourceTrigger="PropertyChanged">
 </Binding>
 </TextBox.Text>
 </TextBox>
 <TextBlock>Mouse-over to see the validation error message.</TextBlock>
</StackPanel>

Remarks

Setting this property provides an alternative to using the DataErrorValidationRule element explicitly. The DataErrorValidationRule is a built-in validation rule that checks for errors that are raised by the IDataErrorInfo implementation of the source object. If an error is raised, the binding engine creates a ValidationError with the error and adds it to the Validation.Errors collection of the bound element. The lack of an error clears this validation feedback, unless another rule raises a validation issue.

ValidatesOnDataErrors is introduced in the .NET Framework version 3.5. For more information, see .NET Framework Versions and Dependencies.

Applies to

See also


Feedback

Was this page helpful?