C# WPF验证(BindingGroup)。项[0]返回null
我正试图根据MSDN示例对我的datagrid进行一些验证 XAML代码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
<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...