wpf中的多列自动搜索用户控件

时间:2012-04-26 13:25:22

标签: c# wpf vb.net user-controls wpf-controls

我需要创建一个自动搜索控件,它会将结果显示为行http://www.devexpress.com/Products/NET/Controls/WPF/Editors/lookup-editor.xml。但是,我不需要这里的图形和复选框。像外观一样的简单列表视图将起作用。

请建议如何使用WPF创建用户控件。

2 个答案:

答案 0 :(得分:2)

Here有一篇关于排序,过滤和分组ListView的文章。

基本上你将CollectionViewSource设置为ListCollectionView。然后,您可以使用Filter Property过滤ListView。

答案 1 :(得分:1)

如果您使用MVVM方法,则可以执行以下操作:

  • 将搜索文本框文本成员,ListView的ItemsSource和SelectedItem绑定到ViewModel
  • 在TextBox的绑定
  • 上设置'UpdateSourceTrigger = PropertyChanged'
  • 在属性的setter中,TextBox绑定添加逻辑,搜索ItemsSource集合并设置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;}
}