2

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

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

4

2 回答 2

2

这里有一篇关于排序、过滤和分组 ListView 的好文章。

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

于 2012-04-26T14:05:30.820 回答
1

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

  • 将您的搜索文本框文本成员、ListView 的 ItemsSource 和 SelectedItem 绑定到 ViewModel
  • 在 TextBox 的绑定上设置“UpdateSourceTrigger=PropertyChanged”
  • 在 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;}
}
于 2012-04-26T14:00:42.220 回答