Xceed Toolkit Plus for WPF v4.6 Documentation
Providing binding-level validation

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;
   }
 }
}