惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
L
LangChain Blog
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
博客园 - 三生石上(FineUI控件)
N
Netflix TechBlog - Medium
D
DataBreaches.Net
P
Proofpoint News Feed
小众软件
小众软件
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
雷峰网
雷峰网
G
Google Developers Blog

博客园 - 空明流光

c# 正则替换与代码动态替换 正则断言备忘 c# await 异步编程工具类 windows 上 使用 conda 以 指定环境 启动 自定义程序 WPF 数据绑定通过 ElementName 失效后改为 Reference 正常 c# 获取当前时间 与跨域 iframe 通信示例 svn 忽略选项还原 android 应用分身无限多开,开源免费应用 使用 chrome 调试 android webview 前端 dom script C# 文件同步写入锁定 sql server 折腾时不小心去掉了 sysadmin 权限 wpf 中显示约束只创建一个窗口实例 sqlcipher/sqlite 加解密 Xamarin Android 动态修改菜单颜色 XABLD7000: Xamarin.Tools.Zip.ZipException: Renaming temporary file failed: Permission denied .net8 项目指定包还原位置和读取位置以便备份依赖项 wpf 访问内置资源 C# UTF-8 各种编码比较 vs2022 wpf 无法识别 xaml 中定义的控件名称 wpf 使用 cursor 命令
wpf datagrid 过滤数据两种方式?
空明流光 · 2025-04-25 · via 博客园 - 空明流光

1. 使用 visible 属性动态绑定

优点:实时性很高

缺点:耗资源

public class TaskVisibilityConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var searchWord = values[0] as string;
        var item = values[1] as string;

        if (item.ToLower().Contains(searchWord.ToLower()))
            return Visibility.Visible;

        return Visibility.Collapsed;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Setter Property="Visibility">
            <Setter.Value>
                <MultiBinding Converter="{StaticResource M3u8TaskVisibilityConverter}">
                    <Binding ElementName="txtSearchWord" Path="Text" />
                    <Binding Path="Title" />
                </MultiBinding>
            </Setter.Value>
        </Setter>
      </Style>
</DataGrid.RowStyle>

2. 使用 CollectionViewSource 动态过滤

优点:代码可控

var collectionView = CollectionViewSource.GetDefaultView(dataGrid.ItemsSource);
collectionView.Filter = item =>
{
    var searchText = txtSearchWord.Text;
    var title = ((YourDataType)item).Title;
    return string.IsNullOrEmpty(searchText) || title.Contains(searchText);
};