信息
您所需的主题如下所示。但此主题未包含在此库中。

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 事件的具体方案是:您可能选择单一验证行为或者在 UI 中提示输入各个控件的分组集,每个控件验证自己的绑定输入。 这在概念上类似于典型网页设计中的这种情形:可能有单个代码路径来处理 HTML 窗体中的所有验证事项,并且以某种常用格式显示各个验证错误和 UI 位置。 如果选择这种使用公共验证例程和 UI 位置的设计,不要在特定于控件的 BindingValidationError 处理程序中将 Handled 设置为 true 如果子对象引发的事件中的 Handled 已设置为 true,分组父对象将无法运行自己的处理程序以作出响应。

控件作者通常不应在控件设计和控件类实现中引发或处理此事件。 在使用控件实例的过程中试图将源设置为双向绑定时,应由绑定引擎来处理绑定源引发的任何异常。 基于每一绑定,绑定可将此类异常作为错误报告给具有应用了绑定的属性的对象。 此行为通过在绑定上将 NotifyOnValidationErrorValidatesOnExceptions 设置为 true 启用。 在双向绑定试图向源发布无效数据时引发的源 setter 异常随后将自该对象引发 BindingValidationError

下面的示例演示此 XAML UI,它使用包含该元素的验证(其中附加了 BindingValidationError 处理)以及验证处理程序代码。 请注意在 StackPanel 级别(而不是对要验证的单独文本元素)附加 BindingValidationError 处理程序的方式。 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 支持的操作系统和浏览器的列表,请参见 支持的操作系统和浏览器

社区附加资源

显示:
© 2014 Microsoft