Control that is displayed in a column-manager cell when
automatic filtering is enabled.
Object Model
Syntax
Example
All examples in this topic assume that the grid is bound to the
Orders table of the Northwind database, unless stated otherwise.
The following example demonstrates how to provide the ShipCountry column with a new style for its associated AutoFilterControl that will only allow single selection.
| XAML | Copy Code |
|---|
<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> |
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 | Copy Code |
|---|
<Grid> <Grid.Resources> <xcdg:DataGridCollectionViewSource x:Key="cvs_orders" Source="{Binding Source={x:Static Application.Current}, Path=Orders}" AutoFilterMode="And" DefaultCalculateDistinctValues="False" AutoCreateItemProperties="False"> <xcdg:DataGridCollectionViewSource.ItemProperties> <xcdg:DataGridItemProperty Name="ShipCountry" Title="Country" CalculateDistinctValues="True"/> <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"/> <xcdg:DataGridItemProperty Name="OrderDate" Title="Order Date"/> <xcdg:DataGridItemProperty Name="Freight"/> </xcdg:DataGridCollectionViewSource.ItemProperties> </xcdg:DataGridCollectionViewSource> </Grid.Resources> <DockPanel> <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> <xcdg:AutoFilterControl x:Name="ShipCountryAutoFilterControl" AutoFilterColumn="{Binding ElementName=OrdersGrid, Path=Columns[ShipCountry]}" AutoFilterContext="{Binding ElementName=OrdersGrid, Path=DataGridContext}"> <xcdg:AutoFilterControl.Template> <ControlTemplate TargetType="{x:Type xcdg:AutoFilterControl}"> <ComboBox x:Name="PART_DistinctValuesHost" Width="125" /> </ControlTemplate> </xcdg:AutoFilterControl.Template> </xcdg:AutoFilterControl> <Button Content="Clear Filter" Command="xcdg:AutoFilterControl.ClearAutoFilterValues" CommandTarget="{Binding ElementName=ShipCountryAutoFilterControl}"/> </StackPanel> <xcdg:DataGridControl x:Name="OrdersGrid" ItemsSource="{Binding Source={StaticResource cvs_orders}}"> <xcdg:DataGridControl.View> <xcdg:TableView UseDefaultHeadersFooters="False"> <xcdg:TableView.FixedHeaders> <DataTemplate> <xcdg:GroupByControl /> </DataTemplate> <DataTemplate> <xcdg:ColumnManagerRow AllowAutoFilter="False" /> </DataTemplate> </xcdg:TableView.FixedHeaders> </xcdg:TableView> </xcdg:DataGridControl.View> </xcdg:DataGridControl> </DockPanel> </Grid> |
Example
Remarks
Notes
If a column displays a custom type, automatic filtering will not function properly for that column unless the type implements the IComparable interface.
Inheritance Hierarchy
Requirements
Supported Operating Systems: Windows Server 2003 Service Pack 1; Windows Vista; Windows XP Service Pack 2
See Also