Welcome to the Xceed Community | Help
Community Search  
More Search Options

Providing binding-level validation

Sort Posts: Previous Next
  •  10-08-2008, 4:07 PM Post no. 28139

    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.

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



View as RSS news feed in XML
Contact | Site Map | Reviews | Legal Terms of Use | Trademarks | Privacy Statement Copyright 2011 Xceed Software Inc.