Gets the list of CellValidationRules against which the content of the cells contained in the column are validated before they exist edit mode.
Syntax
Return Value
A collection of CellValidationRules containing the validation rules against which the content of the cells contained in the column are validated before they exit edit mode.
Example
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 CellValidationRule and add it to a column's CellValidationRules collection to provide UI-level validation
| 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}"/> <!--A data provider to bind to the Period enum--> <ObjectDataProvider x:Key="periods" MethodName="GetValues" ObjectType="{x:Type local:Period}"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="local:Period"/> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> <!--A cell editor that will be used to edit a Period column with a combo box--> <xcdg:CellEditor x:Key="periodEditor"> <xcdg:CellEditor.EditTemplate> <DataTemplate> <ComboBox BorderThickness="0" MinHeight="22" VerticalContentAlignment="Top" SelectedValuePath="." ItemsSource="{Binding Source={StaticResource periods}}" SelectedValue="{xcdg:CellEditorBinding}"> <ComboBox.Resources> <Style TargetType="Popup"> <Setter Property="TextElement.Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" /> </Style> </ComboBox.Resources> </ComboBox> </DataTemplate> </xcdg:CellEditor.EditTemplate> </xcdg:CellEditor> </Grid.Resources> <xcdg:DataGridControl ItemsSource="{Binding Source={StaticResource cvs_composers}}" UpdateSourceTrigger="RowEndingEdit"> <xcdg:DataGridControl.Columns> <xcdg:Column FieldName="Period" CellEditor="{StaticResource periodEditor}"> <xcdg:Column.CellValidationRules> <local:PeriodVSCompositionCountCellValidationRule/> </xcdg:Column.CellValidationRules> </xcdg:Column> <xcdg:Column FieldName="CompositionCount"> <xcdg:Column.CellValidationRules> <local:PeriodVSCompositionCountCellValidationRule /> </xcdg:Column.CellValidationRules> </xcdg:Column> </xcdg:DataGridControl.Columns> </xcdg:DataGridControl> </Grid> |
Implementation of the PeriodVSCompositionCountCellValidationRule validation rule. Implementation of the Person class can be found in the Validating Data topic.
| Visual Basic | Copy Code |
|---|
Imports System
Imports Xceed.Wpf.DataGrid.ValidationRules
Imports Xceed.Wpf.DataGrid
Imports System.Globalization
Imports System.Windows.Controls
Namespace Xceed.Wpf.Documentation
Public Class PeriodVSCompositionCountCellValidationRule
Inherits CellValidationRule
Public Overrides Function Validate( ByVal value As Object, ByVal culture As CultureInfo, _
ByVal context As CellValidationContext ) As ValidationResult
Dim parentRow As Row = context.Cell.ParentRow
Dim compositionCount As Integer
Dim period As Period
If context.Cell.FieldName = "Period" Then
period = CType( value, Period )
compositionCount = CInt( parentRow.Cells( "CompositionCount" ).Content )
Else
period = CType( parentRow.Cells( "Period" ).Content, Period )
compositionCount = CInt( value )
End If
If( ( period = Period.Modern ) And ( compositionCount > 40 ) ) Then
Return New ValidationResult( False, "Composition count must be less than 50 when the period is set to Modern." );
End If
Return ValidationResult.ValidResult
End Function
End Class
End Namespace |
Implementation of the PeriodVSCompositionCountCellValidationRule validation rule. Implementation of the Person class can be found in the Validating Data topic.
| C# | Copy Code |
|---|
using System; using Xceed.Wpf.DataGrid.ValidationRules; using Xceed.Wpf.DataGrid; using System.Globalization; using System.Windows.Controls; namespace Xceed.Wpf.Documentation
{ public class PeriodVSCompositionCountCellValidationRule :
CellValidationRule
{
public override ValidationResult Validate( object value, CultureInfo culture,
CellValidationContext
context )
{
Row parentRow = context.Cell.ParentRow;
int compositionCount;
Period period;
if( context.Cell.FieldName == "Period" )
{
period = ( Period )value;
compositionCount = ( int )parentRow.Cells[ "CompositionCount" ].Content;
}
else
{
period = ( Period )parentRow.Cells[ "Period" ].Content;
compositionCount = ( int )value;
}
if( ( period == Period.Modern ) && compositionCount > 40 )
return new ValidationResult( false,
"Composition count must be less than 50 when the period is set to Modern." );
return ValidationResult.ValidResult;
}
}
} |
Remarks
Requirements
Supported Frameworks: Microsoft .NET Framework version 3.5
See Also