2

我不敢相信我被这个相当简单的事情难住了。我最初在 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 重新插入“行”(在上面的片段中)。

我错过了什么?

4

4 回答 4

3

我遇到了类似的问题。更改某些样式值后,需要在我的 DataGrid 上重新应用转换器。

对我来说,这很有效:

myGrid.Items.Refresh()

它似乎重新应用了所有规则,因此它可能对您有用。

于 2010-06-29T17:01:38.690 回答
1

myGrid.Items.Refresh() 也对我有用,只需在之前重新设置上下文

public void GridExamsRefresh()
{
  grdExamenes.ItemsSource = (this.objPacienteOfContext).Exams;
  grdExamenes.Items.Refresh();
}
于 2011-02-08T14:56:58.867 回答
0

您是否尝试过设置 ItemsSource 属性?

于 2009-07-21T17:30:00.977 回答
0

在这个问题中似乎遇到了一些类似的问题。在评论中,他甚至说将 datacontext 设置为 null 然后重新分配它不起作用。

也许您必须修改该答案中提到的项目集合?

于 2009-06-10T05:53:08.843 回答