다음을 통해 공유


Binding.ValidatesOnDataErrors 속성

정의

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

속성 값

Boolean

DataErrorValidationRule을 포함하면 true이고, 그렇지 않으면 false입니다.

예제

다음 예제에서는 .에서 TextBox사용자 입력을 사용하고 IDataErrorInfo ValidatesOnDataErrors 유효성을 검사합니다. 첫 번째 예제에서는 유효성 검사 오류를 보고하기 위해 구현하는 IDataErrorInfo 데이터 형식을 만듭니다.

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

다음 예제에서는 속성을 바인딩하고 에 설정합니다 ValidatesOnDataErrors true Binding.TextBox Age 사용자가 잘못된 값을 입력하면 빨간색 테두리가 TextBox 표시되고 ToolTip 오류 메시지가 보고됩니다.

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

설명

이 속성을 설정하면 요소를 명시적으로 사용하는 대신 사용할 DataErrorValidationRule 수 있습니다. 원본 DataErrorValidationRule 개체의 구현에 의해 IDataErrorInfo 발생한 오류를 확인하는 기본 제공 유효성 검사 규칙입니다. 오류가 발생하면 바인딩 엔진은 오류를 사용하여 ValidationError 만들고 바인딩된 요소의 컬렉션에 Validation.Errors 추가합니다. 오류가 없으므로 다른 규칙이 유효성 검사 문제를 제기하지 않는 한 이 유효성 검사 피드백이 지워지게 됩니다.

ValidatesOnDataErrors .NET Framework 버전 3.5에서에서 도입 되었습니다. 자세한 내용은 .NET Framework 버전 및 종속성을 참조하십시오.

적용 대상

추가 정보