エクスポート (0) 印刷
すべて展開
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

FrameworkElement.BindingValidationError イベント

Silverlight

バインディング ソースによってデータの妥当性確認エラーが報告されたときに発生します。

名前空間:  System.Windows
アセンブリ :  System.Windows (System.Windows.dll 内)

public event EventHandler<ValidationErrorEventArgs> BindingValidationError
<frameworkElement BindingValidationError="eventhandler"/>

EventHandler<TEventArgs> に基づく、ValidationErrorEventArgs で制限されたハンドラーを使用して、このイベントを処理します。

BindingValidationError イベントはルーティング イベントです。 これは、オブジェクト ツリーの親子関係によって関連付けられたオブジェクトのシーケンス用に複数の BindingValidationError イベント ハンドラーが登録されている場合、その親子関係の各オブジェクトによってイベントが受け取られることを意味します。 イベントは、そのイベントを開始する入力条件を直接受け取るオブジェクトから発生し、一連の各親オブジェクトに通知 ("バブル") されます。 "バブル" とは、イベントが下位のオブジェクトから始まり、オブジェクト ツリーを順に上っていくようすを表しています。 ルーティング イベントの場合、イベント ハンドラーに使用できる sender は、イベントが処理されるオブジェクトを識別します。そのオブジェクトは、イベントを開始する入力条件を実際に受け取ったオブジェクトであるとは限りません。 イベントを開始したオブジェクトを見つけるには、イベントの ValidationErrorEventArgs イベント データの OriginalSource 値を使用します。

BindingValidationError イベントのルーティングに使用される特定のシナリオでは、1 つの検証動作を実行するか、バインド入力を検証する個別のコントロールのグループを UI から入力するかを選択できます。 これは、概念的には、一般的な Web ページ デザインに、HTML フォームですべての検証の問題を処理し、共通のフォーマットとユーザー インターフェイスの場所に各検証エラーを表示する単一コード パスが存在する仕組みに似ています。 共通の検証ルーチンと UI の場所を使用するこのデザインを選択した場合は、コントロール固有の BindingValidationError ハンドラーで Handledtrue に設定しないようにしてください。 子オブジェクトで発生したイベントからの Handled が既に true の場合、グループの親は応答で独自のハンドラーを実行できなくなります。

通常、コントロール作成者は、コントロールのデザインとクラスの実装でこのイベントを発生させたり、イベントを処理したりしないようにする必要があります。 代わりに、バインディング エンジンでは、コントロール インスタンスの使用状況から双方向のバインディングでソースを設定するときに、バインディング ソースによってスローされた例外を処理します。 バインディングごとに、バインディングが適用されるプロパティを持つオブジェクトに対して、このような例外をエラーとして報告できます。 この動作は、バインディングに NotifyOnValidationErrorValidatesOnExceptions の両方を true に設定すると有効になります。 双方向のバインディングが無効なデータをソースにポストしようとしたときに、ソース setter 例外はオブジェクトから BindingValidationError を発生させます。

次の例では、検証 (BindingValidationError 処理がアタッチされている要素など) を使用した XAML UI と検証ハンドラー コードを示しています。 BindingValidationError ハンドラーが、検証対象の個々のテキスト要素ではなく、StackPanel レベルでアタッチされている点に注目してください。 この例では 1 つの要素しか検証されませんが、StackPanel レベルのハンドラーが複数の子要素に対して検証を実行することも考えられます。


<StackPanel BindingValidationError="StackPanel_BindingValidationError" >
    <StackPanel.Resources>
        <my:Bills x:Name="MyBills"/>
    </StackPanel.Resources>
    <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 Height="50" Width="150" Content="Click To Update Source"/>
</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



private void StackPanel_BindingValidationError(object sender, 
    ValidationErrorEventArgs e)
{
    if (e.Action == ValidationErrorEventAction.Added)
    {
        MyTextBox.Background = new SolidColorBrush(Colors.Red);

    }
    else if (e.Action == ValidationErrorEventAction.Removed)
    {
        MyTextBox.Background = new SolidColorBrush(Colors.White);
    }
}


Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft