我有一个ItemsControl,它由DataContext上实现INotifyDataErrorInfo的对象验证。预期的效果是验证错误显示在TextBlock中的控件下方,而不是传统的红色边框和工具提示样式。
验证后,我的TextBlock出现了,但它的Text是空的 - 我对验证错误的绑定有问题,但我无法弄清楚是什么。
此外,TextBlock重叠了ItemsControl下面的控件,而不是为自己创建额外的空间。任何人都可以帮助解决这些问题中的一个或两个吗?
<ItemsControl ...>
<Validation.ErrorTemplate>
<ControlTemplate>
<StackPanel>
<AdornedElementPlaceholder />
<TextBlock Text="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors).CurrentItem.ErrorContent}" />
</StackPanel>
</ControlTemplate>
</Validation.ErrorTemplate>
</ItemsControl>
答案 0 :(得分:3)
几天前,我遇到的问题和你的第一期一样。当我通过使用Snoop检查ErrorTemplate
内的控件时,我发现ErrorTemplate中的DataContext已经是ReadOnlyObservableCollection<ValidationError>
类型。因此,您只需使用<TextBlock Text="{Binding CurrentItem.ErrorContent}" />
,无需投射和设置RelativeResource
。