I’ve made small example on how to place RadGridView inside editable RadComboBox and filter the grid items as you type in the combo:
The easiest way to place any UI element in RadComboBox is to create single RadComboBoxItem and define desired Template:
<telerikInput:RadComboBox Text="{Binding Text, Mode=TwoWay}" IsEditable="True" Height="25" Width="200"> <telerikInput:RadComboBox.Items> <telerikInput:RadComboBoxItem> <telerikInput:RadComboBoxItem.Template> <ControlTemplate> <telerikGrid:RadGridView x:Name="RadGridView1" ShowGroupPanel="False" CanUserFreezeColumns="False" RowIndicatorVisibility="Collapsed" IsReadOnly="True" IsFilteringAllowed="False" ItemsSource="{Binding Items}" Width="200" Height="150" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"> </telerikGrid:RadGridView> </ControlTemplate> </telerikInput:RadComboBoxItem.Template> </telerikInput:RadComboBoxItem> </telerikInput:RadComboBox.Items> </telerikInput:RadComboBox>
Now you can create small view model and bind the Text property of RadComboBox to desired FilterDescriptor of our powerful QueryableCollectionView:
public class MyDataContext : INotifyPropertyChanged { QueryableCollectionView _Items; public QueryableCollectionView Items { get { if (_Items == null) { _Items = new QueryableCollectionView(from i in Enumerable.Range(0, 10000) select new MyObject() { ID = i, Name = String.Format("Name{0}", i) }); _Items.FilterDescriptors.Add(new FilterDescriptor("Name", FilterOperator.Contains, "")); } return _Items; } } string _Text; public string Text { get { return _Text; } set { if (_Text != value) { _Text = value; ((FilterDescriptor)_Items.FilterDescriptors[0]).Value = _Text; OnPropertyChanged("Text"); } } }
}
Happy filtering!
Vladimir Enchev is Director of Engineering, Native Mobile UI & Frameworks