내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

FrameworkElement.BindingValidationError 이벤트

2013-12-13

바인딩 소스에서 데이터 유효성 검사 오류를 보고할 때 발생합니다.

Namespace:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)
XMLNS for XAML: xmlns에 매핑되지 않습니다.

‘선언
Public Event BindingValidationError As EventHandler(Of ValidationErrorEventArgs)
<frameworkElement BindingValidationError="eventhandler"/>

EventHandler(Of TEventArgs)를 기반으로 하고 ValidationErrorEventArgs에 의해 제한되는 처리기를 사용하여 이 이벤트를 처리합니다.

BindingValidationError 이벤트는 라우트된 이벤트입니다. 이는 개체 트리에서 부모-자식 관계로 연결된 일련의 개체에 대해 여러 개의 BindingValidationError 이벤트 처리기가 등록되어 있을 경우 관계에 포함된 각 개체에서 이벤트를 수신함을 의미합니다. 이 이벤트는 이벤트를 시작하는 입력 조건을 직접 수신하는 개체에 의해 발생한 다음 연속된 각 부모 개체로 버블링됩니다. 버블링이란 이벤트가 개체 트리 맨 아래에서 시작하여 위로 올라가면서 작동함을 나타내는 비유입니다. 라우트된 이벤트의 경우 이벤트 처리기에서 사용할 수 있는 sender는 이벤트가 처리되는 개체를 식별합니다. 이 개체는 이벤트가 시작된 입력 조건을 실제로 받는 개체가 아닐 수도 있습니다. 이벤트를 시작한 개체를 가져오려면 이벤트의 ValidationErrorEventArgs 이벤트 데이터에서 OriginalSource 값을 사용합니다.

BindingValidationError 이벤트를 라우트하는 구체적인 시나리오의 예로는 각각 자신에게 바인딩된 입력의 유효성을 검사하는 개별 컨트롤의 그룹화된 집합에 대해 UI에서 하나의 유효성 검사 동작이나 메시지를 사용하는 경우를 들 수 있습니다. 이는 일반적인 웹 페이지를 디자인할 때 HTML 폼에서 발생하는 모든 유효성 검사 문제를 단일 코드 경로를 통해 처리하고, 일반적인 형식 및 UI 위치로 각 유효성 검사 오류를 표시하는 것과 비슷한 개념입니다. 일반적인 유효성 검사 루틴 및 UI 위치를 사용하는 이러한 디자인을 선택할 경우 컨트롤 특정 BindingValidationError 처리기에서 Handledtrue로 설정하지 않아야 합니다. 그룹의 부모는 자식 개체에 의해 발생한 이벤트의 Handled가 이미 true인 경우 이벤트에 대한 응답으로 자체 처리기를 실행할 수 없습니다.

컨트롤 작성자는 일반적으로 컨트롤 디자인 및 컨트롤 클래스 구현에서 이 이벤트를 발생하거나 처리해서는 안 됩니다. 대신 양방향 바인딩에서 컨트롤 인스턴스 사용을 통해 소스를 설정하려는 경우 바인딩 소스에 의해 발생된 모든 예외는 바인딩 엔진이 처리합니다. 바인딩을 기준으로 할 경우 바인딩할 때 바인딩이 적용되는 속성이 포함된 개체에 이러한 예외를 오류로 보고할 수 있습니다. NotifyOnValidationErrorValidatesOnExceptions를 바인딩에서 true로 설정하여 이 동작을 사용할 수 있습니다. 양방향 바인딩에서 잘못된 데이터를 소스에 게시하려고 하면 소스 setter 예외가 개체에서 BindingValidationError를 발생합니다.

다음 예제에서는 BindingValidationError 처리가 연결된 요소 및 유효성 검사 처리기 코드 등의 유효성 검사를 사용하는 XAML UI를 보여 줍니다. BindingValidationError 처리기가 유효성이 검사되는 개별 텍스트 요소 대신 StackPanel 수준에서 어떻게 연결되는지 살펴보세요. 이 예제에서는 하나의 요소에 대해서만 유효성을 검사하지만 StackPanel 수준의 처리기는 여러 자식 요소에 대해 유효성 검사를 수행할 수 있습니다.


<StackPanel BindingValidationError="StackPanel_BindingValidationError" >
    <StackPanel.Resources>
        <my:Bills x:Name="MyBills"/>
    </StackPanel.Resources>

    <TextBlock 
        TextWrapping="Wrap"
        Text="To generate a validation error, input a negative number or a non-number and then tap the button."
    />

    <TextBox x:Name="MyTextBox" Width="50" Margin="10">
        <TextBox.Text>
            <Binding Mode="TwoWay" Source="{StaticResource MyBills}" 
                 Path="Amount" NotifyOnValidationError="true" 
                 ValidatesOnExceptions="true"/>
        </TextBox.Text>
    </TextBox>
    <Button Content="Tap to Update"/>
</StackPanel>



Private Sub StackPanel_BindingValidationError(ByVal sender As Object, _
    ByVal e As ValidationErrorEventArgs)

    If e.Action = ValidationErrorEventAction.Added Then

        MyTextBox.Background = New SolidColorBrush(Colors.Red)
    ElseIf e.Action = ValidationErrorEventAction.Removed Then
        MyTextBox.Background = New SolidColorBrush(Colors.White)
    End If

End Sub


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2014 Microsoft