【问题标题】:Filtering two ICollectionView from a single ObservableCollection从单个 ObservableCollection 过滤两个 ICollectionView
【发布时间】:2011-12-27 10:14:05
【问题描述】:

我在使用两个具有相同ObservableCollection 作为源的ICollectionView 实例时遇到问题。

当我过滤 ICollectionView 时,似乎另一个 ICollectionView 也使用相同的过滤器过滤。我使用方法CollectionViewSource.GetDefaultView 实例化ICollectionView

这是预期的行为吗?我不这么认为,但也许我错过了一些东西。

这是 ViewModel 的构造函数:

ListaVoci = CollectionViewSource.GetDefaultView(RootVM.CollectionVociCE);

其中ListaVociICollectionViewRootVM.CollectionVociCEObservableCollection。 我有两个不同的用户控件,它们有两个不同的 ViewModel 实例。

这是用户控件的构造函数:

datacontext.ListaVoci.Filter = FiltraListaVoci;

FiltraListaVoci 在哪里

public bool FiltraListaVoci(object filter)
{
    // I make some filtering
}

【问题讨论】:

  • 您能分享您的代码以查看更多上下文吗?
  • 您可以将其添加为您自己问题的答案并接受它;它可能对未来的访问者有所帮助。
  • 我添加了我发现的解决方案 :)
  • 我无法回答我的任何帖子,因为我是菜鸟 :) 我必须等待 8 小时......我会尽可能添加它,同时我添加了答案编辑我的问题

标签: wpf observablecollection icollectionview


【解决方案1】:

好的,我解决了这个问题 :) 使用 CollectionViewSource.GetDefaultView() 我为两个 ICollectionView 获得了相同的视图实例,因此它们引用了相同的对象。在这种情况下,实例化 ICollectionView 的正确方法是:

CollectionViewSource cvs = new CollectionViewSource();
cvs.Source = RootVM.CollectionVociSP;
ListaVoci = cvs.View;

因此,每当调用构造函数时,我都会创建一个 Collectionviewsource 对象。我希望这不会导致一些奇怪的副作用:) 还是谢谢你!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2020-03-21
    • 2016-04-07
    相关资源
    最近更新 更多