wpf中使用ListView

发布时间:2025-12-10 11:32:32 浏览次数:2

目录

一、简单使用

二、列表分组

三、自定义组标题

四、列表视图排序

五、列表视图过滤


在wpf中,listview是经常需要使用的,当作列表使用,很多时候把它和DataGrid混淆了,两者在功能上差不多,DataGrid的功能更加强大一些,下面案例来说,如何使用listview。

一、简单使用

1.建立一个程序

2.xaml增加listview

<Window x:Class="ListView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ListView"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="HorizontalContentAlignment" Value="Center" /><Setter Property="Background" Value="Red"/></Style></Window.Resources><Grid><ListView Margin="10" Name="lvUsers"><ListView.View><GridView><GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /><GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" /><GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" /></GridView></ListView.View></ListView></Grid></Window>

3.cs中增加数据

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace ListView{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();List<User> items = new List<User>();items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });lvUsers.ItemsSource = items;}public class User{public string Name { get; set; }public int Age { get; set; }public string Mail { get; set; }}}}

4.简单的效果如下

拓展功能: 

二、列表分组

1.xaml界面

<Window x:Class="ListView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ListView"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="HorizontalContentAlignment" Value="Center" /><Setter Property="Background" Value="Red"/></Style></Window.Resources><Grid><!--列表分组--><ListView Name="lvUsers"><ListView.View><GridView><GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /><GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" /><GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" /></GridView></ListView.View><ListView.GroupStyle><GroupStyle><GroupStyle.HeaderTemplate><DataTemplate><TextBlock FontWeight="Bold" FontSize="14" Text="{Binding Name}"/></DataTemplate></GroupStyle.HeaderTemplate></GroupStyle></ListView.GroupStyle></ListView></Grid></Window>

2.cs代码,根据Sex分组

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace ListView{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();List<User> items = new List<User>();items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" ,Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });lvUsers.ItemsSource = items;CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);PropertyGroupDescription groupDescription = new PropertyGroupDescription("Sex");view.GroupDescriptions.Add(groupDescription);}public enum SexType { Male, Female };public class User{public string Name { get; set; }public int Age { get; set; }public string Mail { get; set; }public SexType Sex { get; set; }}}}

3.效果

三、自定义组标题

1.xaml代码,给标题自定义文字,此处使用了控件模板的方法,把需要修改的内容格式都放在控件模板中

<Window x:Class="ListView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ListView"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="HorizontalContentAlignment" Value="Center" /><Setter Property="Background" Value="Red"/></Style><Style x:Key="ItemStyle" TargetType="{x:Type GroupItem}"><Setter Property="Template"><Setter.Value><ControlTemplate><Expander IsExpanded="True"><Expander.Header><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="Gray" FontSize="22" VerticalAlignment="Bottom" /><TextBlock Text=" 汇总:" FontSize="20" Foreground="Silver" VerticalAlignment="Bottom" Margin="10,0,0,0"/><TextBlock Text="{Binding ItemCount}" FontSize="22" Foreground="Green" FontWeight="Bold" FontStyle="Italic" VerticalAlignment="Bottom" /></StackPanel></Expander.Header><ItemsPresenter /></Expander></ControlTemplate></Setter.Value></Setter></Style></Window.Resources><Grid><!--自定义组标题--><ListView Name="lvUsers"><ListView.View><GridView><GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /><GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" /><GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" /></GridView></ListView.View><ListView.GroupStyle><GroupStyle ContainerStyle="{StaticResource ItemStyle}"/></ListView.GroupStyle></ListView></Grid></Window>

2.cs不变

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace ListView{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();List<User> items = new List<User>();items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" ,Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });lvUsers.ItemsSource = items;CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);PropertyGroupDescription groupDescription = new PropertyGroupDescription("Sex");view.GroupDescriptions.Add(groupDescription);}public enum SexType { Male, Female };public class User{public string Name { get; set; }public int Age { get; set; }public string Mail { get; set; }public SexType Sex { get; set; }}}}

3.效果,点击小三角难可以进行收缩和展开,对数据进行统计

四、列表视图排序

1.xaml代码

<Window x:Class="ListView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ListView"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="HorizontalContentAlignment" Value="Center" /><Setter Property="Background" Value="Red"/></Style></Window.Resources><Grid><!--自定义组标题--><ListView Name="lvUsers"><ListView.View><GridView><GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /><GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" /><GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" /></GridView></ListView.View></ListView></Grid></Window>

2.cs代码,根据Age下降排列和Name上升排列,多个排序以此类推

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace ListView{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();List<User> items = new List<User>();items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" ,Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });lvUsers.ItemsSource = items;CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);view.SortDescriptions.Add(new SortDescription("Age", ListSortDirection.Descending));view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));}public enum SexType { Male, Female };public class User{public string Name { get; set; }public int Age { get; set; }public string Mail { get; set; }public SexType Sex { get; set; }}}}

3.效果

增加按钮排序 

上面是代码硬性编码的排序,为了使用户更加方便和快捷的使用,可以增加按钮进行排序,用户可以点击对应的按钮,进行升序和降序的排列。

1.xaml代码

<Window x:Class="ListView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ListView"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="HorizontalContentAlignment" Value="Center" /><Setter Property="Background" Value="Red"/></Style></Window.Resources><Grid><!--自定义组标题--><ListView Name="lvUsers"><ListView.View><GridView><GridViewColumn Width="120" DisplayMemberBinding="{Binding Name}" ><GridViewColumn.Header><GridViewColumnHeader Tag="Name" Click="lvUsersColumnHeader_Click">Name</GridViewColumnHeader></GridViewColumn.Header></GridViewColumn><GridViewColumn Width="50" DisplayMemberBinding="{Binding Age}" ><GridViewColumn.Header><GridViewColumnHeader Tag="Age" Click="lvUsersColumnHeader_Click">Age</GridViewColumnHeader></GridViewColumn.Header></GridViewColumn><GridViewColumn Width="150" DisplayMemberBinding="{Binding Mail}"><GridViewColumn.Header><GridViewColumnHeader Tag="Mail" Click="lvUsersColumnHeader_Click">Mail</GridViewColumnHeader></GridViewColumn.Header></GridViewColumn></GridView></ListView.View></ListView></Grid></Window>

2.cs代码,主要是绘制按钮的功能

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace ListView{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{private GridViewColumnHeader listViewSortCol = null;private SortAdorner listViewSortAdorner = null;public MainWindow(){InitializeComponent();List<User> items = new List<User>();items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" ,Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });lvUsers.ItemsSource = items;}public enum SexType { Male, Female };public class User{public string Name { get; set; }public int Age { get; set; }public string Mail { get; set; }public SexType Sex { get; set; }}private void lvUsersColumnHeader_Click(object sender, RoutedEventArgs e){GridViewColumnHeader column = (sender as GridViewColumnHeader);string sortBy = column.Tag.ToString();if (listViewSortCol != null){AdornerLayer.GetAdornerLayer(listViewSortCol).Remove(listViewSortAdorner);lvUsers.Items.SortDescriptions.Clear();}ListSortDirection newDir = ListSortDirection.Ascending;if (listViewSortCol == column && listViewSortAdorner.Direction == newDir)newDir = ListSortDirection.Descending;listViewSortCol = column;listViewSortAdorner = new SortAdorner(listViewSortCol, newDir);AdornerLayer.GetAdornerLayer(listViewSortCol).Add(listViewSortAdorner);lvUsers.Items.SortDescriptions.Add(new SortDescription(sortBy, newDir));}public class SortAdorner : Adorner{private static Geometry ascGeometry =Geometry.Parse("M 0 4 L 3.5 0 L 7 4 Z");private static Geometry descGeometry =Geometry.Parse("M 0 0 L 3.5 4 L 7 0 Z");public ListSortDirection Direction { get; private set; }public SortAdorner(UIElement element, ListSortDirection dir): base(element){this.Direction = dir;}protected override void OnRender(DrawingContext drawingContext){base.OnRender(drawingContext);if (AdornedElement.RenderSize.Width < 20)return;TranslateTransform transform = new TranslateTransform(AdornedElement.RenderSize.Width - 15,(AdornedElement.RenderSize.Height - 5) / 2);drawingContext.PushTransform(transform);Geometry geometry = ascGeometry;if (this.Direction == ListSortDirection.Descending)geometry = descGeometry;drawingContext.DrawGeometry(Brushes.Black, null, geometry);drawingContext.Pop();}}}}

3.效果,分别点击界面上面的三角形,可以进行排序的功能

五、列表视图过滤

1.xaml代码,对于检索信息的时候,对列表的视图进行过滤,输入什么信息,就在listview中显示对应的信息

<Window x:Class="ListView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ListView"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="HorizontalContentAlignment" Value="Center" /><Setter Property="Background" Value="Red"/></Style></Window.Resources><DockPanel ><TextBox DockPanel.Dock="Top" Margin="0,0,0,10" Name="txtFilter" TextChanged="txtFilter_TextChanged" /><ListView Name="lvUsers"><ListView.View><GridView><GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /><GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" /><GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" /></GridView></ListView.View></ListView></DockPanel></Window>

2.cs代码,此处的代码,主要是根据Name字段进行过滤的,也可以使用其他的字段进行过滤。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace ListView{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();List<User> items = new List<User>();items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" ,Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Female });items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });lvUsers.ItemsSource = items;CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);view.Filter = UserFilter;}private bool UserFilter(object item){if (String.IsNullOrEmpty(txtFilter.Text))return true;elsereturn ((item as User).Name.IndexOf(txtFilter.Text, StringComparison.OrdinalIgnoreCase) >= 0); //根据过滤Name}public enum SexType { Male, Female };public class User{public string Name { get; set; }public int Age { get; set; }public string Mail { get; set; }public SexType Sex { get; set; }}private void txtFilter_TextChanged(object sender, TextChangedEventArgs e){CollectionViewSource.GetDefaultView(lvUsers.ItemsSource).Refresh();}}}

3.效果,输入j后,Name中只显示关于j的数据

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477