or
							var filter = new FilterDescriptor(dataMember, FilterOperator.IsEqualTo, checkBoxCustomFilterType.Text);namespace Systematic.KVK.InseminationPlan.UIL.Details.Windows.TestBucket.DOM{    [TypeConverter(typeof(TestTypeConverter))]    public class PTestType : IEquatable<PTestType>    {        public long Id { get; set; }        public string ShortTestName { get; set; }        public string TestName { get; set; }        public bool Equals(PTestType other)        {            return Id == other.Id;        }        public override string ToString()        {            return ShortTestName;        }        public override int GetHashCode()        {            return (int)Id;        }        public override bool Equals(object obj)        {            var type = obj as PTestType;            if (type != null)            {                return Id == type.Id;            }            return false;        }        bool IEquatable<PTestType>.Equals(PTestType other)        {            if (other == null)            {                return false;            }            return StringComparer.Ordinal.Equals(Id, other.Id);        }    }}namespace Systematic.KVK.InseminationPlan.UIL.Details.Windows.TestBucket.Tabs.TestBucketTab{    public class PTestTypeConverter : IValueConverter    {        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)        {            var TestType = (PTestType)value;            return TestType.ShortTestName;        }        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)        {            throw new NotImplementedException();        }    }    public class TestTypeConverter : TypeConverter    {        public TestTypeConverter()        {                     }        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)        {            return sourceType == typeof(string);        }        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)        {            var stringValue = value as string;            if (stringValue != null)            {                return new PTestType {Id = 1, TestName = "sdfsdf",ShortTestName = "shortsd"};            }            return base.ConvertFrom(context, culture, value);        }        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)        {            if (destinationType == typeof(string))            {                return true;            }            return base.CanConvertTo(context, destinationType);        }        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)        {            if (destinationType == typeof(string))            {                return ((PTestType)value).ShortTestName;            }            return base.ConvertTo(context, culture, value, destinationType);        }    }}namespace Systematic.KVK.InseminationPlan.UIL.Details.Windows.TestBucket.CustomFilters{    public partial class TestTypeCheckBoxFilterControl : IFilteringControl    {        public ObservableCollection<CheckBoxCustomFilterType> CustomItems { get; set; }        private GridViewBoundColumnBase column;        private CompositeFilterDescriptor compositeFilter;        public TestTypeCheckBoxFilterControl()        {            InitializeComponent();            CustomItems = new ObservableCollection<CheckBoxCustomFilterType>();                         DataContext = this;        }        private void OnFilter(object sender, RoutedEventArgs e)        {            column.DataControl.FilterDescriptors.Clear();            compositeFilter = new CompositeFilterDescriptor {LogicalOperator = FilterCompositionLogicalOperator.Or};            var dataMember = column.DataMemberBinding.Path.Path;            foreach (var checkBoxCustomFilterType in CustomItems)            {                if (checkBoxCustomFilterType.Checked)                {                    var filter = new FilterDescriptor(dataMember, FilterOperator.IsEqualTo, checkBoxCustomFilterType.Text);                    compositeFilter.FilterDescriptors.Add(filter);                }            }            if (!column.DataControl.FilterDescriptors.Contains(compositeFilter))            {                column.DataControl.FilterDescriptors.Add(compositeFilter);            }            IsActive = true;        }        private void OnClear(object sender, RoutedEventArgs e)        {            column.DataControl.FilterDescriptors.Clear();            compositeFilter.FilterDescriptors.Clear();            CustomItems.ForEach(x => x.Checked = false);        }        public void Prepare(Telerik.Windows.Controls.GridViewColumn column)        {            CustomItems.Clear();            this.column = column as GridViewBoundColumnBase;            var distinctValues = ((RadGridView)column.Parent).GetDistinctValues(column, false);            foreach (PTestType distinctValue in distinctValues)            {                CustomItems.Add(new CheckBoxCustomFilterType {Checked = false, Text = distinctValue.ToString()});            }        }        public bool IsActive { get; set; }        private void SelectAll(object sender, RoutedEventArgs e)        {            var checkbox = (sender as CheckBox);            if (checkbox == null || checkbox.IsChecked == null)            {                return;            }            foreach (var checkBoxCustomFilterType in CustomItems)            {                checkBoxCustomFilterType.Checked = checkbox.IsChecked.Value;            }        }    }}<telerik:GridViewDataColumn    DataMemberBinding="{Binding Path=PTestType}"    IsReadOnly="True"    IsFilterable="True"    Header="{x:Static localization:TestBucketTexts.TestType}">    <telerik:GridViewDataColumn.FilteringControl>        <customFilters:TestTypeCheckBoxFilterControl />    </telerik:GridViewDataColumn.FilteringControl>    <telerik:GridViewDataColumn.CellTemplate>        <DataTemplate DataType="dom:PBucketModel">            <TextBlock                Text="{Binding Path=PTestType}" />        </DataTemplate>    </telerik:GridViewDataColumn.CellTemplate></telerik:GridViewDataColumn>
