2012-04-26 4 views
2

Мне нужно создать элемент автоматического поиска, который отобразит результаты в виде строк, как этот http://www.devexpress.com/Products/NET/Controls/WPF/Editors/lookup-editor.xml. Однако здесь мне не нужны графики и флажки. Простой вид списка, такой как внешний вид, будет работать.Многопользовательский пользовательский контроль автопоиска в wpf

Просьба предложить создать пользовательский элемент управления с помощью WPF.

ответ

1

Если вы используете MVVM подход вы можете сделать следующее:

  • Bind поискового элемента Textbox Текст, ItemsSource ListView и SelectedItem к ViewModel
  • Набор 'UpdateSourceTrigger = PropertyChanged' на TextBox-х binding
  • В установщике свойства, которое TextBox привязывает для добавления логики, которая ищет коллекцию ItemsSource и устанавливает свойство bounded SelectedItem.

Что-то вроде этого:

XAML:

<TextBox Text="{Binding Path=SearchTerm, UpdateSourceTrigger=PropertyChanged}"/> 

<ListView ItemsSource="{Binding Path=SourceCollection}" SelectedItem="{Binding Path=SelectedSearchItem, Mode=TwoWay}" /> 

Код:

public class ViewModel : INotifyPropertyChanged 
{ 
    public string SearchTerm 
    { 
      get { return searchTerm; } 
      set { 
       searchTerm = value; 
       SelectedSearchItem = SourceCollection.FirstOrDefault(foo => foo.Name.Contains(searchTerm)); 
      } 
    } 

    public Foo SelectedSearchItem 
    { 
      get { return selecedSearchItem; } 
      set { 
       selectedSearchItem = value; 
       // Raise PropertyChanged 
      } 
    } 


    public ObservableCollection<Foo> SourceCollection { get; set;} 
} 
2

Here имеет хорошую статью на сортировку, фильтрацию и группирование ListView.

В основном вы установили CollectionViewSource в ListCollectionView. Затем вы можете использовать Filter Property для фильтрации ListView.