在过滤这个可观察的集合时,我错过了什么吗?

Jos*_*ech 1 c# windows-phone-7

我有一个例程,它解析来自xml feed的数据.

    ...

    matches.Add(_item);
}
Run Code Online (Sandbox Code Playgroud)

在此之后不久我想要只包含与where子句匹配的项目

if (this.MatchType == FixtureType.Played)
{
    matches = matches.ToList().Where(
        m =>
            m.matchResult == "D"
    ).ToObservableCollection();
}
Run Code Online (Sandbox Code Playgroud)

在此之后,如果我打开一个断点,我注意到匹配现在包含我正在寻找的项目.

现在的问题是,与observablecollection数据绑定的控件仍然具有初步数据.

Jar*_*Par 5

问题是ObservableCollection在这种情况下有2个实例

  • 控件绑定的原始文件
  • 您通过ToObservableCollection电话创建的新电话

为了使新结果显示在Control中,您需要将其重新绑定到新ObservableCollection实例.那或者内联修改原始实例.

var results = matches.Where(m => m.matchResult == "D").ToList();
matches.Clear();
foreach (var cur in results) {
  matches.Add(cur);
}
Run Code Online (Sandbox Code Playgroud)