I will try to suggest an approach for each requirement in the same order as from your enquiry.
1. I am not completely sure what you mean by "column order" and "drop down order". If your goal is to change the positions of the Members drop down and Operators drop down, you can modify the template of RadDataFilter
. Can you please confirm that? You can take a look at the Visual Structure
topic for further reference.
If this is the customization you are trying to achieve, please search for the two RadComboBox controls with x:Name="PART_SimpleFilterMemberComboBox"
in the template of RadDataFilter and simply swap their order. The template of the control is in Telerik.Windows.Controls.Data.xaml
2. A possible approach for restricting the usage of the button for adding a nested operator, would be to subscribe to the PreviewMouseLeftButtonDown
event of RadButton control and cancel the event if needed. This particular RadButton is with x:Name="PART_ToCompositeFilterButton"
. You can take a look at the code snippet below:
sender, MouseButtonEventArgs e)
var source = e.OriginalSource
var button = source.ParentOfType<RadButton>();
&& button.Name ==
Please note, that you will need to implement custom logic as per your requirements to handle this case.
3. I believe that this question is related to the previous one. Custom logic for restricting the user to add nested operators should be implemented using the event from the previous point. Note, that determining the level of a given Filtering Criteria might be quite laborious. A possible resolution might be to traverse the visual tree and keep references of a given object at each level. Then through reference comparison you can determine at which level a particular element is.
4. If you take a look at the aforementioned RadComboBox with x:Name="PART_SimpleFilterOperatorComboBox"
you will notice that its ItemTemplate
is a DataTemplate
. Within it there is a TextBlock element defined and for its Text
property a Converter with x:Key="FilterOperatorConverter" is applied. So, what you can do is define your custom IValueConverter
and handle this logic in it.
value, Type targetType,
parameter, System.Globalization.CultureInfo culture)
I hope this suggestions will help you achieve the desired customizations.
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Telerik Feedback Portal
and vote to affect the priority of the items