Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 网格验证并不总是有效的_C#_Wpf_Xaml - Fatal编程技术网

C# 网格验证并不总是有效的

C# 网格验证并不总是有效的,c#,wpf,xaml,C#,Wpf,Xaml,我有一个数据绑定的网格。当某个字段包含无效时间(00:00:00)时,验证失败,网格应显示红色边框 这可以很好地工作,在验证单个字段时,验证可以完美地工作。但是,在网格中,有时它不显示红色边框,即使值完全相同且验证失败: 如您所见,中间一排显示红色边框,而其他两排则不显示。这两个值在数据库中完全相同 你知道这是什么原因吗 注意:它与不同行上的不同颜色无关。这似乎是随机发生的 网格: //纵队 //钮扣 为什么要设置 validateOnTargetUpdated=“False” 这样,验证可

我有一个数据绑定的网格。当某个字段包含无效时间(00:00:00)时,验证失败,网格应显示红色边框

这可以很好地工作,在验证单个字段时,验证可以完美地工作。但是,在网格中,有时它不显示红色边框,即使值完全相同且验证失败:

如您所见,中间一排显示红色边框,而其他两排则不显示。这两个值在数据库中完全相同

你知道这是什么原因吗

注意:它与不同行上的不同颜色无关。这似乎是随机发生的

网格:


//纵队
//钮扣
为什么要设置 validateOnTargetUpdated=“False”

这样,验证可能仅由初始化网格后的更改触发。


如果我理解正确,您希望验证初始错误,因此您应该将此属性设置为True。

一些详细信息会很好,您只给了我们一个大纲。您希望看到什么样的详细信息?XAML代码?用于确定边框是否应为红色的代码,用于设置红色边框的代码,它所在的事件,以及XAML网格的定义可能被证明是有用的…没有确定边框是否应为红色的特定代码。。。我假设使用默认值。我已经添加了XAML代码,我假设在某些情况下没有调用验证。您可以通过在ValidationRule中设置断点来检查这一点。如果是这种情况,可能与您的数据源有关:即,为了支持数据绑定,您需要在那里实现INotifyPropertyChanged或使用DependencyProperties。
    <DataGrid x:Name="DataGrid1" SelectionMode="Single" ItemsSource="{Binding Rides, NotifyOnValidationError=true}" Height="350" AutoGenerateColumns="False" IsReadOnly="True"  CanUserSortColumns="True" SelectedItem="{Binding SelectedRide}" Margin="0,0,0.4,0" >
        <DataGrid.RowValidationRules>
            <DataErrorValidationRule ValidatesOnTargetUpdated="False" />
        </DataGrid.RowValidationRules>
        <DataGrid.Columns>
            //columns

            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical">
                            //button
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>