WPF实现带筛选功能的DataGrid

1. WPF实现带筛选功能的DataGrid

WPF(Windows Presentation Foundation)是微软推出的一种用于创建Windows桌面应用程序的技术框架。在WPF中,DataGrid是一种常用的控件,用于显示和编辑数据表格。本文将介绍如何在WPF中实现带筛选功能的DataGrid。

1.1 创建WPF应用程序

首先,我们需要创建一个WPF应用程序。打开Visual Studio并选择创建一个新的WPF应用程序项目。在项目创建向导中,选择一个适合的项目名称和位置,并单击“创建”按钮。Visual Studio将创建一个新的WPF应用程序项目,并自动创建一个MainWindow.xaml文件。

1.2 添加DataGrid控件

在MainWindow.xaml文件中,找到Window标签并在前面添加一个Grid标签。Grid是WPF中用于布局的容器控件,我们将使用它来放置DataGrid控件。在Grid标签中添加以下XAML代码:

<Grid>

<DataGrid x:Name="dgData" />

</Grid>

以上代码创建了一个名为dgData的DataGrid控件,并将它放置在Grid中。现在我们可以运行程序,应该能看到一个空的DataGrid控件。

1.3 创建数据源

DataGrid控件需要一个数据源来显示数据。我们可以使用C#代码创建一个简单的数据源。在MainWindow.xaml.cs文件中,找到MainWindow类并在类的顶部添加以下代码:

private ObservableCollection<Person> People { get; set; }

以上代码定义了一个名为People的ObservableCollection对象,它将作为DataGrid的数据源。ObservableCollection是一种特殊的集合类型,当集合中的元素发生变化时,它会通知界面进行更新。

接下来,在MainWindow类的构造函数中添加以下代码来初始化People集合并将其赋值给DataGrid的ItemsSource属性:

public MainWindow()

{

InitializeComponent();

People = new ObservableCollection<Person>();

// 添加一些示例数据

People.Add(new Person { Name = "John", Age = 25 });

People.Add(new Person { Name = "Amy", Age = 30 });

People.Add(new Person { Name = "Bob", Age = 35 });

dgData.ItemsSource = People;

}

以上代码创建了三个Person对象,并将它们添加到People集合中。然后,将People集合赋值给DataGrid的ItemsSource属性,这样DataGrid就能够显示People集合中的数据。

1.4 添加筛选功能

现在我们已经创建了一个带有数据的DataGrid控件,接下来我们将添加筛选功能。在WPF中,可以使用CollectionViewSource来实现筛选。CollectionViewSource是一个数据源包装器,用于提供排序、分组和筛选的功能。

首先,在MainWindow.xaml文件中添加一个TextBox控件和一个Button控件,用于输入筛选条件和执行筛选操作。在Grid标签中添加以下XAML代码:

<Grid>

<!-- 省略其他内容 -->

<StackPanel Orientation="Horizontal" Margin="10">

<TextBox x:Name="txtFilter" Margin="0 0 10 0" Width="150" />

<Button Content="Filter" Click="BtnFilter_Click" />

</StackPanel>

<DataGrid x:Name="dgData" />

</Grid>

以上代码在Grid控件下方添加了一个StackPanel控件,用于放置TextBox和Button控件。TextBox用于输入筛选条件,Button用于执行筛选操作。在MainWindow.xaml.cs文件中,找到BtnFilter_Click事件处理程序并添加以下代码:

private void BtnFilter_Click(object sender, RoutedEventArgs e)

{

string filterText = txtFilter.Text;

ICollectionView view = CollectionViewSource.GetDefaultView(dgData.ItemsSource);

view.Filter = item => {

Person person = item as Person;

return person.Name.Contains(filterText);

};

}

以上代码在筛选按钮的点击事件处理程序中,从TextBox中获取输入的筛选条件。然后,使用CollectionViewSource.GetDefaultView方法获取DataGrid的默认数据视图(即CollectionView),并将过滤器设置为一个lambda表达式。lambda表达式的作用是根据Person对象的Name属性与筛选条件进行匹配,如果包含筛选条件则返回true,否则返回false。

现在我们已经完成了筛选功能的实现。在运行程序并输入筛选条件后,应该能够看到DataGrid中只显示匹配的数据。

2. 效果演示

下面是运行程序后的效果演示:

---

以上就是本文介绍的WPF实现带筛选功能的DataGrid的方法。首先,我们创建了一个WPF应用程序并添加了一个DataGrid控件。然后,使用C#代码创建了一个数据源,并将其绑定到DataGrid的ItemsSource属性上。最后,使用CollectionViewSource实现了筛选功能,用户可以输入筛选条件来过滤数据。

希望本文对正在学习WPF的开发者有所帮助。

后端开发标签