Чтобы добавить быстрый фильтр в заголовок DataGrid без лишних хлопот, просто примените в форме FilterDataGrid, который отличается от стандартного элемента управления DataGrid только одним – в шаблон заголовка столбца уже внедрен ColumnFilter:

How use.

EmployeesView.xaml
<UserControl x:Class="Northwind.NET.Sample.View.EmployeesView"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            ...
            xmlns:bsFilter="http://schemas.bolapansoft.com/xaml/Controls/ItemsFilter"
            >
    <Grid DataContext="{StaticResource EmployeesViewSource}">
        ...
        <bsFilter:FilterDataGrid x:Name="employesDataGrid"
                                ItemsSource="{Binding}"
                                />
    </Grid>
</UserControl>

How work.

Элемент управления ColumnFilter при загрузке извлекает значение привязки для столбца, в котором он расположен, и экземпляр коллекции, привязанной к родительскому DataGrid через свойство ItemsSource. Исходя из извлеченных параметров, формируются модели фильтров, подходящих для столбца, и отображаются в ColumnFilter. Если для столбца (такого, как DataGridTemplateColumn) информацию о привязке извлечь невозможно, привязка ColumnFilter указывается с помощью присоединенного свойства bsFilter:ColumnFilter.BindingPath="имя_свойства_элемента_коллекции".

В зависимости от типа свойства, ColumnFilter отображает следующий набор фильтров:

Property Type

Filters

int, real, long etc.

EqualFilter, LessOrEqualFilter, GreaterOrEqualFilter, RangeFilter.

IComparable

EqualFilter, LessOrEqualFilter, GreaterOrEqualFilter, RangeFilter.

String

EqualFilter, StringFilter.

Bool

EqualFilter.

Object

EqualFilter.

Включение ColumnFilter в DataGrid и настройка его внешнего вида доступно также через стиль, без изменения разработанных форм.

Last edited Nov 8, 2013 at 5:37 PM by Mishkin, version 2