In This Topic
    In This Topic

    The following example demonstrates how to create a custom ValidationRule and apply it to a column's binding to provide binding-level validation.

    The implementation for the YearValidationRule is provided below.

    XAML
    Copy Code
    <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 the YearValidationRule validation rule.

    VB.NET
    Copy Code
    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#
    Copy Code
    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;
       }
     }
    }