验证说起来也不复杂,在对应的列中添加<xcdg:Column.DisplayMemberBindingInfo><xcdg:DataGridBindingInfo Path="和列名中的fileName一样"><xcdg:DataGridBindingInfo.ValidationRules><local:YearValidationRule /></xcdg:DataGridBindingInfo.ValidationRules></xcdg:DataGridBindingInfo> </xcdg:Column.DisplayMemberBindingInfo>这样的属性并在YearValidationRule中写相应的验证代码即可。本例中加入了验证改变背景色代码。
<Window x:Class="Datagrid.Validating.Data.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local ="clr-namespace:Datagrid.Validating.Data"
Title="MainWindow" Height="350" Width="525" xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
<Window.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_composers"
Source="{Binding Source={x:Static Application.Current},
Path=PersonList}"/>
<Style x:Key="cell_error" TargetType="{x:Type xcdg:DataCell}">
<!--<Setter Property="Foreground" Value="Red"/>-->
<Setter Property="Background" Value="#FFCC00"/>
<Setter Property="ToolTip" Value="Invalid value"/>
</Style>
</Window.Resources>
<Grid>
<xcdg:DataGridControl ItemsSource="{Binding Source={StaticResource cvs_composers}}"
UpdateSourceTrigger="RowEndingEdit">
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="BirDay" CellErrorStyle="{StaticResource cell_error}">
<xcdg:Column.DisplayMemberBindingInfo>
<xcdg:DataGridBindingInfo Path="BirDay">
<xcdg:DataGridBindingInfo.ValidationRules>
<local:YearValidationRule />
</xcdg:DataGridBindingInfo.ValidationRules>
</xcdg:DataGridBindingInfo>
</xcdg:Column.DisplayMemberBindingInfo>
</xcdg:Column>
<xcdg:Column FieldName="OldDay">
<xcdg:Column.DisplayMemberBindingInfo>
<xcdg:DataGridBindingInfo Path="OldDay">
<xcdg:DataGridBindingInfo.ValidationRules>
<local:YearValidationRule />
</xcdg:DataGridBindingInfo.ValidationRules>
</xcdg:DataGridBindingInfo>
</xcdg:Column.DisplayMemberBindingInfo>
</xcdg:Column>
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Globalization;
namespace Datagrid.Validating.Data
{
class YearValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
int year = (int)value;
if (year > DateTime.Now.Year)
return new ValidationResult(false, "Chosen year cannot be greater than this year.");
return ValidationResult.ValidResult;
}
}
}