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