TextBlock.Text中的WPF绑定到Validation.Errors不起作用

时间:2014-11-11 14:46:17

标签: c# wpf validation xaml data-binding

我有一个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>

1 个答案:

答案 0 :(得分:3)

几天前,我遇到的问题和你的第一期一样。当我通过使用Snoop检查ErrorTemplate内的控件时,我发现ErrorTemplate中的DataContext已经是ReadOnlyObservableCollection<ValidationError>类型。因此,您只需使用<TextBlock Text="{Binding CurrentItem.ErrorContent}" />,无需投射和设置RelativeResource