为什么此验证示例中的数据绑定有效?

时间:2010-03-29 17:27:58

标签: wpf validation data-binding

我想知道XAML样本(MSDN sample)是如何工作的:

<Style x:Key="textBoxInError" TargetType="{x:Type 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>

问题:

  • (Validation.Errors)[0] .ErrorContent - WPF以某种方式检查此代码吗?因为Validation.Errors可能是一个空集合,而在普通的C#代码中,此代码可能会抛出异常。如果此数据绑定为有效输入返回null - 则将空值转换为空字符串(例如,在文本控件中)?
  • 索引0对应于第一条错误消息。如何从Validate方法返回更多错误消息?

感谢您的回复!

1 个答案:

答案 0 :(得分:1)

在这种情况下,绑定仅在Validation.HasError为真时激活(基于触发器)。因此,您的收藏中至少会出现一个错误。

如果要显示的不仅仅是第一个错误,您可以在Tooltip中放置一个控件,允许您绑定到整个集合,例如ListView。这样可以让ListView的ItemsSource绑定到Validation.Errors的集合,而不是只尝试访问第一个。