文档详情

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

发布:2025-05-12约1.88万字共18页下载文档
文本预览下载声明

WPF实现带筛选功能的DataGrid

目录涉及知识点示例截图核心源码不足与思考

涉及知识点

在本示例中,从数据绑定,到数据展示,涉及知识点如下所示:

DataGrid,要WPF提供的进行二维数据展示在列表控件,默认功能非常简单,但是可以通过数据模板或者控件模板进行扩展和美化,可伸缩性很强。MVVM,是Model-View-ViewModel的简写,主要进行数据和UI进行前后端分离,在本示例中,主要用到的MVVM第三方库为CommunityToolkit.Mvvm,大大简化原生MVVM的实现方式。集合视图,要对DataGrid中的数据进行分组、排序和筛选,可以将其绑定到支持这些函数的CollectionView。然后,可以在不影响基础源数据的情况下处理CollectionView中的数据。集合视图中的更改反映在DataGrid用户界面(UI)中。Popup控件,直接继承FrameworkElement,提供了一种在单独的窗口中显示内容的方法,该窗口相对于指定的元素或屏幕坐标,浮动在当前Popup应用程序窗口上,可用于悬浮窗口。

示例截图

本示例主要模仿Excel的筛选功能进行实现,右键标题栏打开浮动窗口,悬浮于标题栏下方,既可以通过文本框进行筛选,也可以通过筛选按钮弹出右键菜单,选择具体筛选方式,截图如下所示:

选择筛选方式,弹出窗口,如下所示:

输入筛选条件,点击确定,或者取消筛选。如筛选学号里面包含2的,效果如下所示:

注意:以上筛选都是客户端筛选,不会修改数据源,也不会重连数据库。

核心源码

在本示例中,核心源码主要包含以下几个部分:

前端视图【MainWindow.xaml】源码

主要实现了按学号,姓名,年龄三列进行筛选,既可以单列筛选,又可以组合筛选。且三列的筛选实现方式一致,仅是绑定列有差异。

Windowx:xmlns=/winfx/2006/xaml/presentation

xmlns:x=/winfx/2006/xaml

xmlns:d=/expression/blend/2008

xmlns:mc=/markup-compatibility/2006

xmlns:local=clr-namespace:DemoDataGrid

mc:Ignorable=d

Title=DataGrid筛选示例Height=650Width=800

Window.Resources

ResourceDictionary

CollectionViewSourcex:Key=ItemsSourceSource={BindingPath=Students}/CollectionViewSource

CollectionViewSourcex:Key=NamesSource={BindingPath=Names}/CollectionViewSource

CollectionViewSourcex:Key=NosSource={BindingPath=Nos}/CollectionViewSource

CollectionViewSourcex:Key=AgesSource={BindingPath=Ages}/CollectionViewSource

Stylex:Key=ListBoxStyleTargetType={x:TypeListBox}

SetterProperty=ScrollViewer.CanContentScrollValue=True/Setter

SetterProperty=Template

Setter.Value

ControlTemplateTargetType={x:TypeListBox}

ScrollViewerx:Name=ScrollViewerCanContentScroll=True

ItemsPresenter/ItemsPresenter

/ScrollViewer

/ControlTemplate

/Setter.Value

/Setter

/Style

Geometryx:Key=Icon_Filter

M608864C588.8864576851.2576832L576448c0-6.46.4-19.212.8-25.6L787.2256c6.4-6.46.4-1

显示全部
相似文档