The following example demonstrates how to create a custom ValidationRule and apply it to a column's binding to provide binding-level validation.
|
<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> |
Implementation of theYearValidationRulevalidation rule.
|
VB.NET
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
C#
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; } } } |