C# wpf中的多列自动搜索用户控制
我需要创建一个自动搜索控件,它将结果显示为与此相同的行。但是,我不需要这里的图形和复选框。一个简单的类似listview的外观就可以了C# wpf中的多列自动搜索用户控制,c#,wpf,vb.net,user-controls,wpf-controls,C#,Wpf,Vb.net,User Controls,Wpf Controls,我需要创建一个自动搜索控件,它将结果显示为与此相同的行。但是,我不需要这里的图形和复选框。一个简单的类似listview的外观就可以了 请建议如何使用WPF创建用户控件。如果使用MVVM方法,可以执行以下操作: 将搜索文本框文本成员、ListView的ItemsSource和SelectedItem绑定到ViewModel 在文本框的绑定上设置'UpdateSourceTrigger=PropertyChanged' 在属性的setter中,TextBox绑定到添加搜索ItemsSource集
请建议如何使用WPF创建用户控件。如果使用MVVM方法,可以执行以下操作:
- 将搜索文本框文本成员、ListView的ItemsSource和SelectedItem绑定到ViewModel
- 在文本框的绑定上设置'UpdateSourceTrigger=PropertyChanged'
- 在属性的setter中,TextBox绑定到添加搜索ItemsSource集合并设置SelectedItem绑定属性的逻辑
代码:
公共类视图模型:INotifyPropertyChanged
{
公共字符串搜索项
{
获取{return searchTerm;}
设置{
搜索项=值;
SelectedSearchItem=SourceCollection.FirstOrDefault(foo=>foo.Name.Contains(searchTerm));
}
}
public Foo SelectedSearchItem
{
获取{return selecedSearchItem;}
设置{
selectedSearchItem=值;
//增加财产改变
}
}
公共ObservableCollection源集合{get;set;}
}
有一篇关于排序、筛选和分组ListView的好文章
基本上设置为ListCollectionView。然后可以使用来筛选ListView
<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;}
}