我不敢相信我被这个相当简单的事情难住了。我最初在 WPF datagrid codeplex 讨论中发布了这个,但没有得到回应。所以我在这里尝试:
我似乎找不到办法做到这一点。我创建了一个数据网格,其数据上下文最初填充了表中的行。我已经实现了一个搜索功能,它将根据条件返回一些行。假设我只想显示那些行,如何销毁最初创建的数据上下文并添加新过滤的集合?
我天真地开始这样做:
(后期编辑:我似乎无法在这里输入泛型代码——下一行中的转换应该将 datagrid.Items 转换为 MyType(例如))
IEnumerable rows = datagrid.Items.Cast();
IEnumerable filteredRows = rows.Where(row => row.someCondition == true);
我现在如何让我的数据网格只显示filteredRows?只是在做:
数据网格.DataContext = null;
datagrid.DataContext = 过滤行;
不起作用(由于某种原因,它甚至闻起来很愚蠢)。
我还需要做相反的事情(一旦我得到这个工作)。一些按钮单击应该允许用户“清除”搜索结果并将 DataContext 重新插入“行”(在上面的片段中)。
我错过了什么?