C# WPF文本框未对验证错误作出反应

C# WPF文本框未对验证错误作出反应,c#,wpf,C#,Wpf,我有一个带有UserControl的WPF应用程序,其中包含一个网格,该网格又包含几个文本框: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitio

我有一个带有UserControl的WPF应用程序,其中包含一个网格,该网格又包含几个文本框:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <TextBlock Grid.Column="0" Grid.Row="0"
               Text="Application ID" />

    <TextBox Grid.Column="1" Grid.Row="0"
             Text="{Binding AzureAppID}"/>

    <TextBlock Grid.Column="0" Grid.Row="1"
               Text="Vault URL" />

    <TextBox Grid.Column="1" Grid.Row="1"
             Text="{Binding AzureVaultUrl}" />

</Grid>

我已经使用INotifyDataErrorInfo接口实现了验证,该接口正在工作并正确标记错误(例如,绑定到第一个文本框的AzureAppID不允许为空)

事实上,如果在任一文本框中输入无效值,则包含它们的网格控件将亮起一个红色边框,表示出现错误。但两个文本框都不会突出显示以指示错误

为什么其他控件——包括嵌入(比如)数据网格中的其他文本框——反应正常,而网格中的这些控件却不能

这是在NET4.7下构建的项目中

把这归咎于愚蠢


事实证明,我的验证例行程序是用与错误相关联的属性的名称稍有不同的名称标记错误(在有问题的字段中)。当然,WPF引擎无法根据文本框绑定的内容将错误与文本框匹配。

我认为简单的答案是,数据网格旨在侦听通知(假设empty not allwoed将通过eventargs以适当的消息通知回..当然INotifyErrorInfo接口提供了幕后的infra)


正如你所说,当考虑普通网格/自定义控件时,你需要注意这一点。

Thanx,@Rahul。听起来我需要添加代码来设置文本框上的验证错误……这似乎是一件奇怪的事情。我一直在自定义网格控件中尝试这样做,但迄今为止没有成功。我已经将此作为答案,ev嗯,虽然不是,因为它暗示了一些事情,最终让我找到了正确的答案。有关更多信息,请参阅编辑后的问题。