Filtering Data Items
The following page provides a list of examples that demonstrate how to filter data items.
All examples in this topic assume that the grid is bound to the Orders table of the Northwind database, unless stated otherwise.
Filtering data items (Filter Event)
The following example demonstrates how to filter the data items displayed in a grid using the Filter event. Only the data items whose ShipVia property value is "3" will be displayed in the grid.
- XAML
- C#
- VB.NET
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current},
Path=Orders}"
Filter="ShipViaFilter"/>
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}"/>
</Grid>
private void ShipViaFilter( object sender, FilterEventArgs e )
{
object value = ( ( System.Data.DataRow )e.Item )[ "ShipVia" ];
if( ( value != null ) && ( value != DBNull.Value ) )
{
if( ( int )value == 3 )
{
e.Accepted = true;
}
else
{
e.Accepted = false;
}
}
}
Private Sub ShipViaFilter( sender As Object, e As FilterEventArgs )
Dim value As Object = CType( e.Item, System.Data.DataRow )( "ShipVia" )
If (value IsNot Nothing) AndAlso (value <> DBNull.Value) Then
If CInt( value ) = 3 Then
e.Accepted = True
Else
e.Accepted = False
End If
End If
End Sub
The next example demonstrates how to filter data items using the Filter predicate delegate.
- C#
- VB.NET
DataGridCollectionView view = new DataGridCollectionView( Orders );
view.Filter = new Predicate<object>( ShipViaFilter );
dataGridControl.ItemsSource = view;
private bool ShipViaFilter( object item )
{
object value = ( ( System.Data.DataRow )item )[ "ShipVia" ];
if( ( value != null ) && ( value != DBNull.Value ) )
{
if( ( int )value == 3 )
return true;
}
return false;
}
Dim view As New DataGridCollectionView( Orders )
view.Filter = New Predicate(Of Object)( ShipViaFilter )
dataGridControl.ItemsSource = view
Private Function ShipViaFilter( item As Object ) As Boolean
Dim value As Object = TryCast( item, System.Data.DataRow )( "ShipVia" )
If (value IsNot Nothing) AndAlso (value <> DBNull.Value) Then
If CInt( value ) = 3 Then
Return True
End If
End If
Return false
End Function
Enabling automatic filtering
The following example demonstrates how to enable automatic filtering, disabling it for the columns that will not support it and filtering the distinct values of the ShipCity column.
- XAML
- C#
- VB.NET
<Grid>
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current},
Path=Orders}"
AutoFilterMode="And"
DistinctValuesConstraint="Filtered"
AutoCreateItemProperties="False">
<xcdg:DataGridCollectionViewSource.ItemProperties>
<xcdg:DataGridItemProperty Name="ShipCountry"
Title="Country"/>
<xcdg:DataGridItemProperty Name="ShipCity"
Title="City"/>
<xcdg:DataGridItemProperty Name="ShipAddress"
Title="Address"/>
<xcdg:DataGridItemProperty Name="ShipPostalCode"
Title="Postal Code"/>
<xcdg:DataGridItemProperty Name="ShipName"
Title="Name"
CalculateDistinctValues="False"/>
<xcdg:DataGridItemProperty Name="OrderDate"
Title="Order Date"
CalculateDistinctValues="False"/>
<xcdg:DataGridItemProperty Name="Freight"
CalculateDistinctValues="False"/>
</xcdg:DataGridCollectionViewSource.ItemProperties>
</xcdg:DataGridCollectionViewSource>
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}"/>
</Grid>
DataGridCollectionView view = new DataGridCollectionView( Orders, typeof( System.Data.DataRow ), false, false );
view.AutoFilterMode = AutoFilterMode.And;
view.DistinctValuesConstraint = DistinctValuesConstraint.Filtered;
view.ItemProperties.Add( new DataGridItemProperty( "ShipCountry", typeof( string ) ) );
view.ItemProperties.Add( new DataGridItemProperty( "ShipCity", typeof( string ) ) );
view.ItemProperties.Add( new DataGridItemProperty( "ShipAddress", typeof( string ) ) );
view.ItemProperties.Add( new DataGridItemProperty( "ShipPostalCode", typeof( string ) ) );
DataGridItemProperty shipName = new DataGridItemProperty( "ShipName", typeof( string ) );
shipName.CalculateDistinctValues = false;
view.ItemProperties.Add( shipName );
DataGridItemProperty orderDate = new DataGridItemProperty( "OrderDate", typeof( DateTime ) );
orderDate.CalculateDistinctValues = false;
view.ItemProperties.Add( orderDate );
DataGridItemProperty freight = new DataGridItemProperty( "Freight", typeof( double ) );
freight.CalculateDistinctValues = false;
view.ItemProperties.Add( freight );
dataGridControl.ItemsSource = view;
Dim view As New DataGridCollectionView( Orders, GetType( System.Data.DataRow ), False, False )
view.AutoFilterMode = AutoFilterMode.And
view.DistinctValuesConstraint = DistinctValuesConstraint.Filtered
view.ItemProperties.Add( New DataGridItemProperty( "ShipCountry", GetType( String ) ) )
view.ItemProperties.Add( New DataGridItemProperty( "ShipCity", GetType( String ) ) )
view.ItemProperties.Add( New DataGridItemProperty( "ShipAddress", GetType( String ) ) )
view.ItemProperties.Add( New DataGridItemProperty( "ShipPostalCode", GetType( String ) ) )
Dim shipName As New DataGridItemProperty( "ShipName", GetType( String ) )
shipName.CalculateDistinctValues = False
view.ItemProperties.Add( shipName )
Dim orderDate As New DataGridItemProperty( "OrderDate", GetType( DateTime ) )
orderDate.CalculateDistinctValues = False
view.ItemProperties.Add( orderDate )
Dim freight As New DataGridItemProperty( "Freight", GetType( Double ) )
freight.CalculateDistinctValues = False
view.ItemProperties.Add( freight )
dataGridControl.ItemsSource = view
Providing a new auto-filter control style
The following example demonstrates how to provide the ShipCountry column with a new style for its associated AutoFilterControl that will only allow single selection.
<Grid>
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current},
Path=Orders}"
AutoFilterMode="And"
DistinctValuesConstraint="Filtered"
AutoCreateItemProperties="False">
<xcdg:DataGridCollectionViewSource.ItemProperties>
<xcdg:DataGridItemProperty Name="ShipCountry"
Title="Country"/>
<xcdg:DataGridItemProperty Name="ShipCity"
Title="City"/>
<xcdg:DataGridItemProperty Name="ShipAddress"
Title="Address"/>
<xcdg:DataGridItemProperty Name="ShipPostalCode"
Title="Postal Code"/>
<xcdg:DataGridItemProperty Name="ShipName"
Title="Name"
CalculateDistinctValues="False"/>
<xcdg:DataGridItemProperty Name="OrderDate"
Title="Order Date"
CalculateDistinctValues="False"/>
<xcdg:DataGridItemProperty Name="Freight"
CalculateDistinctValues="False"/>
</xcdg:DataGridCollectionViewSource.ItemProperties>
</xcdg:DataGridCollectionViewSource>
<Style x:Key="autoFilterControlStyle"
TargetType="{x:Type xcdg:AutoFilterControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ListBox x:Name="PART_DistinctValuesHost"
SelectionMode="Single"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}">
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="ShipCountry"
AutoFilterControlStyle="{StaticResource autoFilterControlStyle}"/>
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
</Grid>
Creating external auto-filter controls
The following example demonstrates how to use a ComboBox as an auto-filter control to automatically filter the content of the ShipCountry column. ComboBox controls do not support multiple selections; therefore, the values of the target column will only be filtered by 1 value.
Since, by default, the auto-filter control in the column-manager-cell drop downs support multiple selections, it is recommended to deactivate the drop down by setting the AllowAutoFilter property of the ColumnManagerRow to false to hide the column-manager cells' auto-filter controls and prevent unexpected synchronization behavior between the controls that have the same auto-filter target column or different selection modes.
- XAML
- C#
- VB.NET
<Grid>
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvsOrders"
Source="{Binding Source={x:Static Application.Current},Path=Orders}"
AutoFilterMode="And"
AutoCreateItemProperties="False"
DefaultCalculateDistinctValues="False"
DistinctValuesConstraint="Filtered"
DistinctValuesRefreshNeeded="cvsOrders_DistinctValuesRefreshNeeded">
<xcdg:DataGridCollectionViewSource.ItemProperties>
<xcdg:DataGridItemProperty Name="ShipCountry"
Title="Country"
CalculateDistinctValues="True" />
<xcdg:DataGridItemProperty Name="ShipCity"
Title="City"
CalculateDistinctValues="True" />
<xcdg:DataGridItemProperty Name="ShipAddress"
Title="Address" />
<xcdg:DataGridItemProperty Name="ShipPostalCode"
Title="Postal Code" />
<xcdg:DataGridItemProperty Name="ShipName"
Title="Name" />
<xcdg:DataGridItemProperty Name="OrderDate"
Title="Order Date" />
<xcdg:DataGridItemProperty Name="Freight" />
</xcdg:DataGridCollectionViewSource.ItemProperties>
</xcdg:DataGridCollectionViewSource>
</Grid.Resources>
<DockPanel>
<StackPanel Margin="20,0,0,0"
Orientation="Horizontal"
DockPanel.Dock="Top"
HorizontalAlignment="Left">
<xcdg:AutoFilterControl x:Name="ShipCountryAutoFilterControl"
AutoFilterColumn="{Binding ElementName=dataGrid, Path=Columns[ShipCountry]}"
AutoFilterContext="{Binding ElementName=dataGrid, Path=DataGridContext}">
<xcdg:AutoFilterControl.Template>
<ControlTemplate TargetType="{x:Type xcdg:AutoFilterControl}">
<StackPanel>
<Button Content="Clear Country filter"
Command="xcdg:AutoFilterControl.ClearAutoFilterValues"
CommandTarget="{Binding ElementName=ShipCountryAutoFilterControl}" />
<ComboBox x:Name="PART_DistinctValuesHost"
DropDownOpened="ShipCountryAutoFilterControl_DropDownOpened" />
</StackPanel>
</ControlTemplate>
</xcdg:AutoFilterControl.Template>
</xcdg:AutoFilterControl>
<xcdg:AutoFilterControl x:Name="ShipCityAutoFilterControl"
AutoFilterColumn="{Binding ElementName=dataGrid, Path=Columns[ShipCity]}"
AutoFilterContext="{Binding ElementName=dataGrid, Path=DataGridContext}">
<xcdg:AutoFilterControl.Template>
<ControlTemplate TargetType="{x:Type xcdg:AutoFilterControl}">
<StackPanel>
<Button Content="Clear City filter"
Command="xcdg:AutoFilterControl.ClearAutoFilterValues"
CommandTarget="{Binding ElementName=ShipCityAutoFilterControl}" />
<ComboBox x:Name="PART_DistinctValuesHost"
DropDownOpened="ShipCityAutoFilterControl_DropDownOpened" />
</StackPanel>
</ControlTemplate>
</xcdg:AutoFilterControl.Template>
</xcdg:AutoFilterControl>
</StackPanel>
<xcdg:DataGridControl x:Name="dataGrid"
ItemsSource="{Binding Source={StaticResource cvsOrders}}">
<xcdg:DataGridControl.View>
<xcdg:TableflowView UseDefaultHeadersFooters="False">
<xcdg:TableflowView.FixedHeaders>
<DataTemplate>
<xcdg:GroupByControl />
</DataTemplate>
<DataTemplate>
<xcdg:ColumnManagerRow AllowAutoFilter="False" />
</DataTemplate>
</xcdg:TableflowView.FixedHeaders>
</xcdg:TableflowView>
</xcdg:DataGridControl.View>
</xcdg:DataGridControl>
</DockPanel>
</Grid>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//Reset all flags
m_distinctValuesNeedRefreshFlags.Add("ShipCountry", false);
m_distinctValuesNeedRefreshFlags.Add("ShipCity", false);
}
private void cvsOrders_DistinctValuesRefreshNeeded(object sender, EventArgs e)
{
//Use this event to set flags that will tell the AutoFilterControl it needs to update when its DropDown is opening.
IList<string> keys = m_distinctValuesNeedRefreshFlags.Keys.ToList();
for (int i = 0; i < keys.Count; i++)
{
m_distinctValuesNeedRefreshFlags[keys[i]] = true;
}
}
private void ShipCountryAutoFilterControl_DropDownOpened(object sender, EventArgs e)
{
//If DistinctValues need to be updated
if (m_distinctValuesNeedRefreshFlags["ShipCountry"])
{
//Get the collection view
DataGridCollectionView collectionView = dataGrid.ItemsSource as DataGridCollectionView;
if (collectionView != null)
{
//And refresh the DistinctValues only for the required field
collectionView.RefreshDistinctValuesForFieldName("ShipCountry");
}
//Reset the flag.
m_distinctValuesNeedRefreshFlags["ShipCountry"] = false;
}
}
private void ShipCityAutoFilterControl_DropDownOpened(object sender, EventArgs e)
{
//If DistinctValues need to be updated
if (m_distinctValuesNeedRefreshFlags["ShipCity"])
{
//Get the collection view
DataGridCollectionView collectionView = dataGrid.ItemsSource as DataGridCollectionView;
if (collectionView != null)
{
//And refresh the DistinctValues only for the required field
collectionView.RefreshDistinctValuesForFieldName("ShipCity");
}
//Reset the flag.
m_distinctValuesNeedRefreshFlags["ShipCity"] = false;
}
}
private Dictionary<string, bool> m_distinctValuesNeedRefreshFlags = new Dictionary<string, bool>();
}
Public Partial Class MainWindow
Inherits Window
Public Sub New()
InitializeComponent()
'Reset all flags
m_distinctValuesNeedRefreshFlags.Add("ShipCountry", False)
m_distinctValuesNeedRefreshFlags.Add("ShipCity", False)
End Sub
Private Sub cvsOrders_DistinctValuesRefreshNeeded(sender As Object, e As EventArgs)
'Use this event to set flags that will tell the AutoFilterControl it needs to update when its DropDown is opening.
Dim keys As IList(Of String) = m_distinctValuesNeedRefreshFlags.Keys.ToList()
For i As Integer = 0 To keys.Count - 1
m_distinctValuesNeedRefreshFlags(keys(i)) = True
Next
End Sub
Private Sub ShipCountryAutoFilterControl_DropDownOpened(sender As Object, e As EventArgs)
'If DistinctValues need to be updated
If m_distinctValuesNeedRefreshFlags("ShipCountry") Then
'Get the collection view
Dim collectionView As DataGridCollectionView = TryCast(dataGrid.ItemsSource, DataGridCollectionView)
If collectionView IsNot Nothing Then
'And refresh the DistinctValues only for the required field
collectionView.RefreshDistinctValuesForFieldName("ShipCountry")
End If
'Reset the flag.
m_distinctValuesNeedRefreshFlags("ShipCountry") = False
End If
End Sub
Private Sub ShipCityAutoFilterControl_DropDownOpened(sender As Object, e As EventArgs)
'If DistinctValues need to be updated
If m_distinctValuesNeedRefreshFlags("ShipCity") Then
'Get the collection view
Dim collectionView As DataGridCollectionView = TryCast(dataGrid.ItemsSource, DataGridCollectionView)
If collectionView IsNot Nothing Then
'And refresh the DistinctValues only for the required field
collectionView.RefreshDistinctValuesForFieldName("ShipCity")
End If
'Reset the flag.
m_distinctValuesNeedRefreshFlags("ShipCity") = False
End If
End Sub
Private m_distinctValuesNeedRefreshFlags As New Dictionary(Of String, Boolean)()
End Class
Providing custom distinct values
The following example demonstrates how to provide custom distinct values that will display the only the month in columns that display DateTime values and that will filter according to a value range for a decimal column.
- XAML
- C#
- VB.NET
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current}, Path=Orders}"
AutoFilterMode="And"
DefaultCalculateDistinctValues="False">
<xcdg:DataGridCollectionViewSource.ItemProperties>
<xcdg:DataGridItemProperty Name="OrderDate"
QueryDistinctValue="DataGridItemProperty_QueryDistinctValue_Date"
CalculateDistinctValues="True"/>
<xcdg:DataGridItemProperty Name="RequiredDate"
QueryDistinctValue="DataGridItemProperty_QueryDistinctValue_Date"
CalculateDistinctValues="True" />
<xcdg:DataGridItemProperty Name="ShippedDate"
QueryDistinctValue="DataGridItemProperty_QueryDistinctValue_Date"
CalculateDistinctValues="True" />
<xcdg:DataGridItemProperty Name="Freight"
QueryDistinctValue="DataGridItemProperty_QueryDistinctValue_Range"
CalculateDistinctValues="True" />
</xcdg:DataGridCollectionViewSource.ItemProperties>
</xcdg:DataGridCollectionViewSource>
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}"/>
</Grid>
private void DataGridItemProperty_QueryDistinctValue_Date( object sender, QueryDistinctValueEventArgs e )
{
if( e.DataSourceValue is DateTime )
{
e.DistinctValue = ( ( DateTime )e.DataSourceValue ).ToString( "MMMM" );
}
}
private void DataGridItemProperty_QueryDistinctValue_Range( object sender, QueryDistinctValueEventArgs e )
{
if( e.DataSourceValue is decimal )
{
decimal value = ( decimal )e.DataSourceValue;
if( value <= 100 )
{
e.DistinctValue = "0 - 100";
}
else if( value > 100 && value <= 500 )
{
e.DistinctValue = "101 - 500";
}
else
{
e.DistinctValue = "500+";
}
}
}
Private Sub DataGridItemProperty_QueryDistinctValue_Date( ByVal sender As Object, ByVal e As QueryDistinctValueEventArgs )
If TypeOf e.DataSourceValue Is DateTime Then
e.DistinctValue = CDate( e.DataSourceValue ).ToString( "MMMM" )
End If
End Sub
Private Sub DataGridItemProperty_QueryDistinctValue_Range( ByVal sender As Object, ByVal e As QueryDistinctValueEventArgs )
If TypeOf e.DataSourceValue Is Decimal Then
Dim value As Decimal = CDec( e.DataSourceValue )
If value <= 100 Then
e.DistinctValue = "0 - 100"
ElseIf( value > 100 And value <= 500 ) Then
e.DistinctValue = "101 - 500"
Else
e.DistinctValue = "500+"
End If
End If
End Sub
Using a filter row
The following example demonstrates how to add a FilterRow to the fixed headers of a grid's view that will allow the data items in the grid to be filtered according to the user-specified filter criteria.
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_products"
Source="{Binding Source={x:Static Application.Current}, Path=Orders}" />
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_products}}">
<xcdg:DataGridControl.View>
<xcdg:TableView>
<xcdg:TableView.FixedHeaders>
<DataTemplate>
<xcdg:FilterRow Background="Pink" />
</DataTemplate>
</xcdg:TableView.FixedHeaders>
</xcdg:TableView>
</xcdg:DataGridControl.View>
</xcdg:DataGridControl>
</Grid>
Providing default filter criteria
The following example demonstrates how to provide default filter criteria that will initially filter the data items in a grid through the FilterRow.
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid"
xmlns:s="clr-namespace:System;assembly=mscorlib">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current}, Path=Orders}">
<xcdg:DataGridCollectionViewSource.ItemProperties>
<xcdg:DataGridItemProperty Name="ShipCountry">
<xcdg:DataGridItemProperty.FilterCriterion>
<xcdg:EqualToFilterCriterion Value="Canada" />
</xcdg:DataGridItemProperty.FilterCriterion>
</xcdg:DataGridItemProperty>
<xcdg:DataGridItemProperty Name="EmployeeID">
<xcdg:DataGridItemProperty.FilterCriterion>
<xcdg:OrFilterCriterion>
<xcdg:OrFilterCriterion.FirstFilterCriterion>
<xcdg:EqualToFilterCriterion>
<s:Int32>2</s:Int32>
</xcdg:EqualToFilterCriterion>
</xcdg:OrFilterCriterion.FirstFilterCriterion>
<xcdg:OrFilterCriterion.SecondFilterCriterion>
<xcdg:EqualToFilterCriterion>
<s:Int32>3</s:Int32>
</xcdg:EqualToFilterCriterion>
</xcdg:OrFilterCriterion.SecondFilterCriterion>
</xcdg:OrFilterCriterion>
</xcdg:DataGridItemProperty.FilterCriterion>
</xcdg:DataGridItemProperty>
</xcdg:DataGridCollectionViewSource.ItemProperties>
</xcdg:DataGridCollectionViewSource>
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}">
<xcdg:DataGridControl.View>
<xcdg:TableView>
<xcdg:TableView.FixedHeaders>
<DataTemplate>
<xcdg:FilterRow Background="Pink" />
</DataTemplate>
</xcdg:TableView.FixedHeaders>
</xcdg:TableView>
</xcdg:DataGridControl.View>
</xcdg:DataGridControl>
</Grid>
Enabling and disabling advanced filtering
The following example demonstrates how to set advanced filter mode to Always, and how to disable advanced filtering on at least one column.
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current}, Path=Orders}" />
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}">
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="ShipCountry"
AllowAdvancedFilter="False" />
</xcdg:DataGridControl.Columns>
<xcdg:DataGridControl.View>
<xcdg:TableflowView AdvancedFilterMode="Always" />
</xcdg:DataGridControl.View>
</xcdg:DataGridControl>
</Grid>
Localize the filter operators
The following example demonstrates how to set a style to localize the operators.
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
<Grid.Resources>
<ResourceDictionary>
<xcdg:DataGridCollectionViewSource x:Key="cvs_orders"
Source="{Binding Source={x:Static Application.Current}, Path=Orders}" />
<Style x:Key="filterExpressionEditorStyle"
TargetType="xcdg:FilterExpressionEditor">
<Setter Property="FilterOperatorsText">
<Setter.Value>
<col:Hashtable>
<s:String x:Key="{x:Type xcdg:GreaterThanFilterCriterion}">></s:String>
<s:String x:Key="{x:Type xcdg:GreaterThanOrEqualToFilterCriterion}">>=</s:String>
<s:String x:Key="{x:Type xcdg:LessThanFilterCriterion}"><</s:String>
<s:String x:Key="{x:Type xcdg:LessThanOrEqualToFilterCriterion}"><=</s:String>
<s:String x:Key="{x:Type xcdg:EqualToFilterCriterion}">=</s:String>
<s:String x:Key="{x:Type xcdg:DifferentThanFilterCriterion}"><></s:String>
</col:Hashtable>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Grid.Resources>
<xcdg:DataGridControl x:Name="OrdersGrid"
ItemsSource="{Binding Source={StaticResource cvs_orders}}">
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="ShipCountry"
FilterExpressionEditorStyle="{StaticResource filterExpressionEditorStyle}" />
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
</Grid>