C# WPF验证(BindingGroup)。项[0]返回null

C# WPF验证(BindingGroup)。项[0]返回null,c#,wpf,wpfdatagrid,wpf-4.0,C#,Wpf,Wpfdatagrid,Wpf 4.0,我正试图根据MSDN示例对我的datagrid进行一些验证 XAML代码 <DataGrid x:Name="grdQuoteDetail" Height="319" VerticalAlignment="Top" DockPanel.Dock="Top" Margin="0,10,0,0" RowEditEnding="grdQuoteDetailSave" CellEditEnding="grdQuoteDetail_CellEditEnding" AutoGenerateCo

我正试图根据MSDN示例对我的datagrid进行一些验证

XAML代码

 <DataGrid x:Name="grdQuoteDetail" Height="319" VerticalAlignment="Top"   DockPanel.Dock="Top" Margin="0,10,0,0" RowEditEnding="grdQuoteDetailSave" CellEditEnding="grdQuoteDetail_CellEditEnding"  AutoGenerateColumns="False">
            <DataGrid.RowValidationRules>
                <local:CourseValidationRule ValidationStep="UpdatedValue"/>
            </DataGrid.RowValidationRules>
            <DataGrid.Columns>
                <DataGridTextColumn Header="No" Binding="{Binding No ,  ValidatesOnExceptions=True}" Width="50"  />
                <DataGridTextColumn Header="Description" Binding="{Binding Description}" Width="*" />
                <DataGridTextColumn Header="Total" Binding="{Binding Total}" Width="120" />
            </DataGrid.Columns>
 </DataGrid>
验证码

public class CourseValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {

        tblTesting qt = (value as BindingGroup).Items[0] as tblTesting ;  //Return Null 
        if (qt.No > 10)
        {
            return new ValidationResult(false, "This Numbe cannot greater than 10");
        }
        else
        {
            return ValidationResult.ValidResult;
        }

    }
}
tblTesting的类文件

 public class tblTesting 
 { 
        public int No {get;set;}
        public string Description {get;set;}
        public double Total {get;set;}
 }
我正在为我的工作准备零分

qt

我不知道为什么,请提供任何指导。

因为
(值为BindingGroup)。项[0]
属于“DataRowView”类型,它与您的
tblTesting
类无关

您可以获取与
NO
属性相对应的第一个单元格的值

var dataRowView = (value as BindingGroup).Items[0] as DataRowView;
int no = Convert.ToInt32(dataRowView.Row[0]);

if (no > 10)
//do the rest...
var dataRowView = (value as BindingGroup).Items[0] as DataRowView;
int no = Convert.ToInt32(dataRowView.Row[0]);

if (no > 10)
//do the rest...