Class that creates and wraps a binding that is used by a column to retrieve and validate its values.
All examples in this topic assume that the grid is bound to a list of Composer objects, unless stated otherwise.
The following example demonstrates how to create a custom ValidationRule and apply it to a column's binding to provide binding-level validation.Implementation of the YearValidationRule validation rule.Implementation of the YearValidationRule validation rule.
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid"
xmlns:local="clr-namespace:Xceed.Wpf.Documentation">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_composers"
Source="{Binding Source={x:Static Application.Current},
Path=Composers}"/>
</Grid.Resources>
<xcdg:DataGridControl ItemsSource="{Binding Source={StaticResource cvs_composers}}"
UpdateSourceTrigger="RowEndingEdit">
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="BirthYear">
<xcdg:Column.DisplayMemberBindingInfo>
<xcdg:DataGridBindingInfo Path="BirthYear">
<xcdg:DataGridBindingInfo.ValidationRules>
<local:YearValidationRule />
</xcdg:DataGridBindingInfo.ValidationRules>
</xcdg:DataGridBindingInfo>
</xcdg:Column.DisplayMemberBindingInfo>
</xcdg:Column>
<xcdg:Column FieldName="DeathYear">
<xcdg:Column.DisplayMemberBindingInfo>
<xcdg:DataGridBindingInfo Path="DeathYear">
<xcdg:DataGridBindingInfo.ValidationRules>
<local:YearValidationRule />
</xcdg:DataGridBindingInfo.ValidationRules>
</xcdg:DataGridBindingInfo>
</xcdg:Column.DisplayMemberBindingInfo>
</xcdg:Column>
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
</Grid>
Imports System
Imports System.Windows.Controls
Imports System.Globalization
Namespace Xceed.Wpf.Documentation
Public Class YearValidationRule
Inherits ValidationRule
Public Overrides Function Validate( ByVal value As Object, _
ByVal cultureInfo As CultureInfo ) As ValidationResult
Dim year As Integer = CInt( value )
If year > DateTime.Now.Year Then
Return New ValidationResult( False, "Chosen year cannot be greater than this year." )
End If
Return ValidationResult.ValidResult
End Function
End Class
End Namespace
using System;
using System.Windows.Controls;
using System.Globalization;
namespace Xceed.Wpf.Documentation
{
public 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;
}
}
}
System.Object
Xceed.Wpf.DataGrid.DataGridBindingInfo