TextBlock中的WPF绑定.文本到验证.错误不起作用



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

几天前我遇到了与您的第一个问题相同的问题。当我使用Snoop检查ErrorTemplate中的控件时,我发现ErrorTemplate中的DataContext已经是ReadOnlyObservableCollection<ValidationError>类型。因此,您可以只使用<TextBlock Text="{Binding CurrentItem.ErrorContent}" />,而无需铸造和设置RelativeResource

最新更新