How to use?
Download the binary file and add it into Silverlight Project => References
In XAML on page that you need to add this control, add next lines (i recommend to mix control with TabControl):
<UserControl
//...
// Define controls namespaces
xmlns:ria="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Ria"
xmlns:ctl="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:ctlRia="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Ria"
// Define Server app that have RIA Services
xmlns:srvApp="clr-namespace:<OUR_SERVER_APP_PROJECT_NAME_THAT_HAVE_RIA_SERVICES>"
// Define RIA Services DataFilter Control
xmlns:riaDataFilter="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.RIADataFilter.Control"
>
<UserControl.Resources>
<ctlRia:DomainDataSource x:Name="ddsCustomer" QueryName="GetCustomers" AutoLoad="True">
<ctlRia:DomainDataSource.DomainContext>
<srvApp:<RIA_SERVICES_DOMAIN_CONTEXT> />
</ctlRia:DomainDataSource.DomainContext>
</ctlRia:DomainDataSource>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<ctl:TabControl>
<ctl:TabItem Header="Filtering" IsSelected="True">
<riaDataFilter:DataFilter x:Name="RiaDataFilter1" DomainDataSource="{Binding ElementName=ddsCustomer}" />
</ctl:TabItem>
<ctl:TabItem Header="Sorting">
<riaDataFilter:DataSort x:Name="RiaDataFilter2" DomainDataSource="{Binding ElementName=ddsCustomer}" />
</ctl:TabItem>
<ctl:TabItem Header="Grouping">
<riaDataFilter:DataGroup x:Name="RiaDataFilter3" DomainDataSource="{Binding ElementName=ddsCustomer}" />
</ctl:TabItem>
</ctl:TabControl>
</Grid>
</UserControl>
How to Localize Control?
How to localize DataFilter
<riaDataFilter:DataFilter
x:Name="RiaDataFilter1"
ButtonAddFilterTooltip="Add filter"
ButtonDeleteFilterTooltip="Remove filter"
ButtonClearFilterTooltip="Clear filter"
ButtonApplyContent="Apply"
ButtonApplyTooltip="Apply filters"
ButtonCancelContent="Cancel"
ButtonCancelTooltip="Cancel filters"
FilterPropertyPathHeader="PropertyPath column header name"
FilterOperationHeader="Operator column header name"
FilterValueHeader="Value column header name"
/>
How to localize DataSort
<riaDataFilter:DataSort
x:Name="RiaDataFilter2"
ButtonAddSortTooltip="Add sort"
ButtonDeleteSortTooltip="Remove sort"
ButtonClearSortTooltip="Clear sort"
ButtonApplyContent="Apply"
ButtonApplyTooltip="Apply sorts"
ButtonCancelContent="Cancel"
ButtonCancelTooltip="Cancel sorts"
SortPropertyPathHeader="PropertyPath column header name"
SortDirectionHeader="Direction column header name"
/>
How to localize DataGroup
<riaDataFilter:DataGroup
x:Name="RiaDataFilter3"
ButtonAddGroupTooltip="Add group"
ButtonDeleteGroupTooltip="Remove group"
ButtonClearGroupTooltip="Clear group"
ButtonApplyContent="Apply"
ButtonApplyTooltip="Apply groups"
ButtonCancelContent="Cancel"
ButtonCancelTooltip="Cancel groups"
GroupPropertyPathHeader="PropertyPath column header name"
/>
How to localize FilterOperator's
<riaDataFilter:FilterOperatorLocalizationCollection x:Key="FilterLocalization">
<riaDataFilter:FilterOperatorLocalization Operator="Contains" Localization="Содержит"/>
<riaDataFilter:FilterOperatorLocalization Operator="EndsWith" Localization="Заканчивается на"/>
<riaDataFilter:FilterOperatorLocalization Operator="IsContainedIn" Localization="Содержится в"/>
<!-...-->
</riaDataFilter:FilterOperatorLocalizationCollection>
<!-...-->
<riaDataFilter:DataFilter
x:Name="RiaDataFilter1"
FilterOperatorLocalizationCollection="{StaticResource FilterLocalization}"
/>
How to localize SortDirection's
<riaDataFilter:SortDirectionLocalizationCollection x:Key="SortLocalization">
<riaDataFilter:SortDirectionLocalization Direction="Ascending" Localization="По возрастанию" />
<riaDataFilter:SortDirectionLocalization Direction="Descending" Localization="По убыванию" />
</riaDataFilter:SortDirectionLocalizationCollection>
<!-...-->
<riaDataFilter:DataSort
x:Name="RiaDataFilter2"
SortDirectionLocalizationCollection="{StaticResource SortLocalization}"
/>
How to use IncludeFieldList - only defined fields must be Included and showed at the ComboBox
<UserControl
//...
// Define RIA Services DataFilter Control
xmlns:riaDataFilter="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.RIADataFilter.Control"
xmlns:core="clr-namespace:System;assembly=mscorlib"
>
<UserControl.Resources>
<core:String x:Key="includeFieldList">CompanyName, ContactName, ContactTitle</core:String>
//NOTE:
// - you can include RelatedEntity fields like: Order.Id, Order.Name
// - or you can include all Entity like this: Order.*
</UserControl.Resources>
//...
<riaDataFilter:DataFilter
x:Name="RiaDataFilter1"
DomainDataSource="{Binding ElementName=YOUR_DOMAINDATASOURCE}"
IncludeFieldList="{StaticResource includeFieldList}"
/>
// You can define your fields, as you Want, it is Case Insensitive
// Use IncludeFieldList for all of RIADataFilter controls like this
How to use ExcludeFieldList - defined fields must be Excluded from fields that showed at ComboBox
<UserControl
//...
// Define RIA Services DataFilter Control
xmlns:riaDataFilter="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.RIADataFilter.Control"
xmlns:core="clr-namespace:System;assembly=mscorlib"
>
<UserControl.Resources>
<core:String x:Key="excludeFieldList">CustomerID</core:String>
//NOTE:
// - you can exclude RelatedEntity fields like: Order.Id, Order.Name
// - or you can exclude all Entity like this: Order.*
</UserControl.Resources>
//...
<riaDataFilter:DataFilter
x:Name="RiaDataFilter1"
DomainDataSource="{Binding ElementName=YOUR_DOMAINDATASOURCE}"
ExcludeFieldList="{StaticResource excludeFieldList}"
/>
// You can define your fields, as you Want, it is Case Insensitive
// Use ExcludeFieldList for all of RIADataFilter controls like this
How to use DomainEntityFieldCollection (User-frendly field names) - defines at client-side and replace names that comes from DomainContext metadata file
<UserControl
//...
// Define RIA Services DataFilter Control
xmlns:riaDataFilter="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.RIADataFilter.Control"
>
<UserControl.Resources>
<riaDataFilter:DomainEntityFieldCollection x:Key="DomainFieldCollection">
<riaDataFilter:DomainEntityField PropertyPath="Address" DisplayName="Client-Side Customer Address"/>
<riaDataFilter:DomainEntityField PropertyPath="City" DisplayName="Client-Side Customer City"/>
</riaDataFilter:DomainEntityFieldCollection>
</UserControl.Resources>
//...
<riaDataFilter:DataFilter
x:Name="RiaDataFilter1"
DomainDataSource="{Binding ElementName=YOUR_DOMAINDATASOURCE}"
DomainEntityFieldCollection="{StaticResource DomainFieldCollection}"
/>
// NOTE: DomainEntityFieldCollection have HIGH PRIORITY when get Fields from DomainDataSource, user-frendly names from DomainDataSource will be ignored
// You can define your fields, as you Want, it is Case Insensitive
// Use this for all of RIADataFilter controls like this