13 Answers, 1 is accepted
We offer a built-in Filter Row feature. You can turn it on by setting FilteringMode="FilterRow".
Kind regards,
Rossen Hristov
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
I know this Feature but i don´t want to have the CaseSensitive and the Filter Button!
Is it possible to customize the FilterRow ?
To hide the match case visibility button you can attach to the FieldFilterEditorCreated event of the grid, check whether the editor is a StringFilterEditor and then set its MatchCaseVisibility to Collapsed.
To hide the filtering funnel, you can use Expression Blend (or do it by hand) and edit the XAML control template of FieldFilterControl. Then you can hide the button called PART_DropDownButton.
Regards,
Rossen Hristov
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
thanks for your quick response!
Do you have a Sample for that?
http://www.telerik.com/help/wpf/common-styling-appearance-edit-control-templates-blend.html
Regards,
Rossen Hristov
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
You can check our online docs. They explain how to do this.
Regards,
Rossen Hristov
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
I need to change the field filter control of Dropdown button color. I tried but not able to get the proper template.
can you please share?
Regards,
MohanRajP
The control is called FieldFilterControl. Here is its template:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:grid="clr-namespace:Telerik.Windows.Controls.GridView" xmlns:treelist="clr-namespace:Telerik.Windows.Controls.TreeListView" xmlns:input="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Input" xmlns:controls="clr-namespace:Telerik.Windows.Controls" > <grid:FilterOperatorConverter x:Key="FilterOperatorConverter" /><SolidColorBrush x:Key="GridView_FilterIconOuterBorder" Color="Black" /><SolidColorBrush x:Key="GridView_FilterIconTopBorder" Color="White" /><LinearGradientBrush x:Key="GridView_FilterIconBackground" EndPoint="0,0.5" StartPoint="1,0.5"> <GradientStop Color="#FF353535" Offset="0"/> <GradientStop Color="White" Offset="0.8"/> </LinearGradientBrush><LinearGradientBrush x:Key="GridView_FilterIconBackground_Filtered" EndPoint="0,0.5" StartPoint="1,0.5"> <GradientStop Color="#FFFF7300" Offset="0"/> <GradientStop Color="#FFFFF400" Offset="0.8"/> </LinearGradientBrush><SolidColorBrush x:Key="GridView_FilterIconInnerBorder" Color="#FF5B5B5B" /><telerik:Office_BlackTheme x:Key="Theme" /><SolidColorBrush x:Key="ControlOuterBorder" Color="#FF848484" /> <DataTemplate x:Key="FilterOperatorItemTemplate"> <TextBlock Text="{Binding Converter={StaticResource FilterOperatorConverter}}" /> </DataTemplate> <Style x:Key="FieldFilterDropDownButtonStyle" TargetType="telerik:RadDropDownButton"> <Setter Property="IsOpen" Value="false"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Padding" Value="3"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="telerik:RadDropDownButton"> <Grid> <ContentPresenter x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> <Popup x:Name="DropDownPopup"> <ContentPresenter x:Name="DropDownPopupContent" ContentTemplate="{TemplateBinding DropDownContentTemplate}" Content="{TemplateBinding DropDownContent}" DataContext="{Binding DataContext, RelativeSource={RelativeSource TemplatedParent}}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </Popup> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="FieldFilterControlTemplate" TargetType="grid:FieldFilterControl"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <Grid x:Name="PART_MainGrid"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <ContentControl x:Name="PART_FilterEditorContentControl" Grid.Column="0" IsEnabled="{Binding EditorIsEnabled}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Margin="2 1 0 2"/> <telerik:RadDropDownButton x:Name="PART_DropDownButton" Grid.Column="1" KeepOpen="False" Style="{StaticResource FieldFilterDropDownButtonStyle}" DropDownIndicatorVisibility="Collapsed"> <Border Cursor="Hand" Background="Transparent" Padding="3 0 0 0"> <Grid Width="12" Height="13" Cursor="Hand"> <Path Fill="{StaticResource GridView_FilterIconOuterBorder}" Stretch="Fill" Margin="0 1 0 0" Data="M5,9 L6,9 6,10 5,10 z M4,4 L5,4 5,5 5,6 5,7 5,8 5,9 4,9 4,8 4,7 4,6 4,5 z M7.9850001,3 L8.985,3 8.985,4 8,4 8,5 8,6 8,7 8,8 8,9 8,10 8,11 7.9999997,12 6.9999998,12 6.9999998,11 6,11 6,10 6.9999999,10 6.9999999,9 6.9999999,8 6.9999999,7 6.9999999,6 6.9999999,5 6.9999999,4 7.9850001,4 z M3,3 L4,3 4,4 3,4 z M9,2 L10,2 10,3 9,3 z M2,2 L3,2 3,3 2,3 z M7.9999999,0 L9,0 10,0 11,0 12,0 12,1 11,1 11,2 10,2 10,1 9,1 7.9999999,1 z M0,0 L1,0 2,0 3,0 4,0 5,0 6,0 6.9999998,0 7.9999997,0 7.9999997,1 6.9999998,1 6,1 5,1 4,1 3,1 2,1 2,2 1,2 1,1 0,1 z"/> <Path Fill="{StaticResource GridView_FilterIconTopBorder}" Stretch="Fill" Margin="2 1 2 0" VerticalAlignment="Top" Height="1" Data="M0,0 L1,0 2,0 3.0000002,0 4.0000002,0 5.0000001,0 5.9850001,0 6.0000001,0 6.9850001,0 7.9850001,0 7.9850001,1 6.9850001,1 6.0000001,1 5.9850001,1 5.0000001,1 4.0000002,1 3.0000002,1 2,1 1,1 0,1 z"/> <Path Fill="{StaticResource GridView_FilterIconBackground}" Stretch="Fill" Margin="3 2 3 3" Data="M0,0 L1,0 2,0 3,0 4,0 5,0 6,0 6,1 5,1 4.985,1 4.985,2 4,2 4,3 4,4 4,5 4,6 4,7 4,8 3,8 3,7 2,7 2,6 2,5 2,4 2,3 2,2 1,2 1,1 0,1 z" /> <Path Fill="{StaticResource GridView_FilterIconBackground_Filtered}" Visibility="{Binding FunnelFillVisibility}" Stretch="Fill" Margin="3,2,3,3" Data="M0,0 L1,0 2,0 3,0 4,0 5,0 6,0 6,1 5,1 4.985,1 4.985,2 4,2 4,3 4,4 4,5 4,6 4,7 4,8 3,8 3,7 2,7 2,6 2,5 2,4 2,3 2,2 1,2 1,1 0,1 z" /> <Path Fill="{StaticResource GridView_FilterIconInnerBorder}" Stretch="Fill" Margin="0 0 0 1" Data="M5,9 L6,9 6,10 5,10 z M4,4 L5,4 5,5 5,6 5,7 5,8 5,9 4,9 4,8 4,7 4,6 4,5 z M7.9850001,3 L8.985,3 8.985,4 8,4 8,5 8,6 8,7 8,8 8,9 8,10 8,11 7.9999997,12 6.9999998,12 6.9999998,11 6,11 6,10 6.9999999,10 6.9999999,9 6.9999999,8 6.9999999,7 6.9999999,6 6.9999999,5 6.9999999,4 7.9850001,4 z M3,3 L4,3 4,4 3,4 z M9,2 L10,2 10,3 9,3 z M2,2 L3,2 3,3 2,3 z M7.9999999,0 L9,0 10,0 11,0 12,0 12,1 11,1 11,2 10,2 10,1 9,1 7.9999999,1 z M0,0 L1,0 2,0 3,0 4,0 5,0 6,0 6.9999998,0 7.9999997,0 7.9999997,1 6.9999998,1 6,1 5,1 4,1 3,1 2,1 2,2 1,2 1,1 0,1 z"/> </Grid> </Border> <telerik:RadDropDownButton.DropDownContent> <ListBox x:Name="PART_FilterOperatorsListBox" ItemsSource="{Binding AvailableOperatorViewModels}" SelectedItem="{Binding SelectedOperatorViewModel, Mode=TwoWay}" telerik:StyleManager.Theme="{StaticResource Theme}"/> </telerik:RadDropDownButton.DropDownContent> </telerik:RadDropDownButton> </Grid> </Border> </ControlTemplate> <Style x:Key="FieldFilterControlStyle" TargetType="grid:FieldFilterControl"> <Setter Property="Template" Value="{StaticResource FieldFilterControlTemplate}" /> <Setter Property="BorderThickness" Value="0 0 1 0"/> <Setter Property="MinHeight" Value="26"/> <Setter Property="BorderBrush" Value="{StaticResource ControlOuterBorder}"/> <Setter Property="SnapsToDevicePixels" Value="True" /> </Style> <Style TargetType="grid:FieldFilterControl" BasedOn="{StaticResource FieldFilterControlStyle}"/> <Style TargetType="grid:FieldFilterControl" BasedOn="{StaticResource FieldFilterControlStyle}" x:Key="{telerik:ThemeResourceKey ThemeType={x:Type telerik:Office_BlackTheme}, ElementType={x:Type grid:FieldFilterControl}}"/> </ResourceDictionary>You can examine the template and change what you need to change.
All the best,
Rossen Hristov
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
Hi I've been trying for the life of me to get this to work, but seem completely unable to do it and was looking for some help.
I'm in the same boat where I want to hide the filter button from the filter row, however, when I try to past that into my <Window.Resources> tag I get the following errors:
The name "FieldFilterControl" does not exist in the namespace "clr-namespace:Telerik.Windows.Controls.GridView".
But I'm not sure what I'm doing wrong since the documentation says it should exist there?
Whoops, I guess I should have just flailed for a while longer. I eventually did get this to work after copying and pasting from the xaml file.
For anyone else who comes across this and wants to hide everything for your filter row, this is what I ended up doing:
In your xaml file, within <Window></Window> add:
<Window.Resources> <Style x:Key="FieldFilterDropDownButtonStyle" TargetType="telerik:RadDropDownButton"> <Setter Property="IsOpen" Value="false"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="telerik:RadDropDownButton"> <Grid> <ContentPresenter x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> <Popup x:Name="DropDownPopup" mat:ThemeEffectsHelper.IsAcrylic="True"> <Border x:Name="DropDownPopupBorder" Background="{telerik1:FluentResource ResourceKey=AlternativeBrush}"> <ContentPresenter x:Name="DropDownPopupContent" ContentTemplate="{TemplateBinding DropDownContentTemplate}" Content="{TemplateBinding DropDownContent}" DataContext="{TemplateBinding DataContext}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </Border> </Popup> </Grid> <ControlTemplate.Triggers> <Trigger SourceName="DropDownPopup" Property="mat:ThemeEffectsHelper.IsAcrylic" Value="True"> <Setter TargetName="DropDownPopupBorder" Property="Background" Value="{Binding Source={StaticResource AlternativeBrushProxy}, Path=ProxyValue, Converter={StaticResource OpacityConverter}, ConverterParameter=128}"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="FieldFilterControlTemplate" TargetType="grid:FieldFilterControl"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> <Grid x:Name="PART_MainGrid"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <!--<ColumnDefinition Width="Auto"/>--> </Grid.ColumnDefinitions> <ContentControl x:Name="PART_FilterEditorContentControl" Margin="3 0" IsEnabled="{Binding EditorIsEnabled}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"/> <!--<telerik:RadDropDownButton x:Name="PART_DropDownButton" Grid.Column="1" Style="{StaticResource FieldFilterDropDownButtonStyle}" KeepOpen="False" DropDownIndicatorVisibility="Collapsed"> <Border Cursor="Hand" Background="Transparent" Padding="2 0 5 0"> <Grid Width="12" Height="11" Margin="2"> <telerik:RadGlyph FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{TemplateBinding Foreground}" Glyph="{StaticResource GlyphFilterSmall}"/> <telerik:RadGlyph FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{telerik1:FluentResource ResourceKey=AccentFocusedBrush}" Visibility="{Binding FunnelFillVisibility}" Glyph="{StaticResource GlyphFilterSmall}"/> </Grid> </Border> <telerik:RadDropDownButton.DropDownContent> <ListBox x:Name="PART_FilterOperatorsListBox" Background="#01FFFFFF" ItemsSource="{Binding AvailableOperatorViewModels}" SelectedItem="{Binding SelectedOperatorViewModel, Mode=TwoWay}"/> </telerik:RadDropDownButton.DropDownContent> </telerik:RadDropDownButton> --> </Grid> </Border> </ControlTemplate> <Style x:Key="FieldFilterControlStyle" TargetType="grid:FieldFilterControl"> <Setter Property="Template" Value="{StaticResource FieldFilterControlTemplate}"/> <Setter Property="BorderBrush" Value="{telerik1:FluentResource ResourceKey=BasicSolidBrush}"/> <Setter Property="BorderThickness" Value="0 0 1 1"/> <Setter Property="Padding" Value="0 1"/> <Setter Property="MinHeight" Value="31"/> <Setter Property="FontWeight" Value="Normal"/> <Setter Property="telerik:TouchManager.TouchMode" Value="None"/> </Style> <Style TargetType="grid:FieldFilterControl" BasedOn="{StaticResource FieldFilterControlStyle}"/> </Window.Resources>
And at the top of the xaml I also had to include the following references:
xmlns:telerik1="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"xmlns:grid="clr-namespace:Telerik.Windows.Controls.GridView;assembly=Telerik.Windows.Controls.GridView"xmlns:mat="clr-namespace:Telerik.Windows.Controls.MaterialControls;assembly=Telerik.Windows.Controls"
That will get rid of your filter button. To get rid of the Match Case button, add Search As You Type Filtering, and adjust your textbox so that it doesn't get cutoff and is hidden until selected (looks cleaner), add the following methods to the code behind:
private void gridView_FieldFilterEditorCreated2(object sender, Telerik.Windows.Controls.GridView.EditorCreatedEventArgs e) { //get the StringFilterEditor in your RadGridView var stringFilterEditor = e.Editor as Telerik.Windows.Controls.Filtering.Editors.StringFilterEditor; if (stringFilterEditor != null) // this is suggested as an option but doesn't
{ stringFilterEditor.MatchCaseVisibility = Visibility.Collapsed; } if (stringFilterEditor != null) { stringFilterEditor.Loaded += (s1, e1) => { var textBox = e.Editor.ChildrenOfType<TextBox>().Single(); textBox.BorderBrush = Brushes.Transparent; textBox.MinWidth = 0; //otherwise it gets cutoff in narrow columns.
textBox.TextChanged += (s2, e2) => { textBox.GetBindingExpression(TextBox.TextProperty).UpdateSource(); textBox.Focus(); }; }; } } private void OnRadGridViewFilterOperatorsLoading(object sender, Telerik.Windows.Controls.GridView.FilterOperatorsLoadingEventArgs e) { //For search as you type to work the default comparators for each column need to be set.
switch (e.Column.UniqueName) { case "Col1": e.DefaultOperator1 = Telerik.Windows.Data.FilterOperator.Contains; break; case "Col2": e.DefaultOperator1 = Telerik.Windows.Data.FilterOperator.Contains; break; case "Col3": e.DefaultOperator1 = Telerik.Windows.Data.FilterOperator.Contains; break; case "Col4": e.DefaultOperator1 = Telerik.Windows.Data.FilterOperator.IsGreaterThanOrEqualTo; break; } }
Note that you'll have to adjust your column names to set the appropriate default comparators to get SAYT working. And then finally just link up your event handlers in your MainWindow constructor after InitializeComponent():
public MainWindow() { StyleManager.ApplicationTheme = new FluentTheme(); InitializeComponent(); this.localDataGrid.FieldFilterEditorCreated += gridView_FieldFilterEditorCreated2; this.localDataGrid.FilterOperatorsLoading += OnRadGridViewFilterOperatorsLoading; }
I am happy to hear that you have managed to find a solution. However below are some of my comments:
- Instead of commenting the lines in the custom style targeting FieldFilterControl, I would set Visibility="Collapsed" to the RadDropDownButton inside because there is x:Name starting with PART, which means that it is called by code and removing it may lead to unexpected behavior.
- I would suggest you migrating to NoXAML binaries because this way it won't be needed to copy all StaticResources in your application (which means that if you have already migrated to NoXAML, you can delete the FieldFilterDropDownButtonStyle)
- Instead of hiding the MatchCase indicator in code, you can use the following style:
<StyleTargetType="filteringEditors:StringFilterEditor"BasedOn="{StaticResource StringFilterEditorStyle}"><SetterProperty="MatchCaseVisibility"Value="Collapsed"/></Style>
I hope this helps.
Regards,
Sia
Progress Telerik