网格验证并不总是有效

时间:2014-10-23 08:16:12

标签: c# wpf xaml

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

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

enter image description here

如你所见,中间的行是红色边框,而其他人则不是。数据库中的2个值完全相同。

知道可能导致这种情况的原因吗?

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

网格:

    <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>

1 个答案:

答案 0 :(得分:0)

你为什么设置 ValidatesOnTargetUpdated = “假”?

这样,验证可能仅在初始化网格后由更改触发。 see MSDN for detailed explanation

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