【问题标题】:Update the List view observable collection using MVVM使用 MVVM 更新 List 视图 observable 集合
【发布时间】:2017-05-04 11:26:45
【问题描述】:

我有一个usercontrol,里面有一个列表框和一个列表视图控件。对于 Listview,我绑定了 TrafficManager 类型的 observablecollection 类,如下所示:

   private static ObservableCollection<TrafficManager> _trafficCollection;
            public ObservableCollection<TrafficManager> TrafficCollection
            {
                get { return _trafficCollection; }
                set
                {
                    _trafficCollection = value;
                    OnPropertyChanged("TrafficCollection"); 
                }
            } 

我已将此绑定到列表视图的 itemsource。 现在我的要求是选择列表框项目,我需要过滤列表视图的一些项目。为此,我使用 linq 从列表视图中获取所需的行并将其添加到列表视图集合中。在添加之前,我做了一个列表视图集合TrafficCollection.Clear(),然后添加到该集合中。但现在的问题是在列表框中选择另一个项目,我需要再次使用原始列表视图内容来再次使用 linq 执行过滤。这里一旦TrafficCollection.Clear() 执行了原始的可观察集合数据就消失了。我如何维护 listview 的原始可观察集合数据"TrafficCollection" 的备份。请记住,我只有一种观点。有没有办法做到这一点?请告诉我。

【问题讨论】:

  • 您保留原始物品而不是扔掉它们。您的 VM 可以有多个集合包含对相同项目的引用。
  • 谢谢,但您能告诉我如何保存对同一类项目的引用吗?如果我通过添加或删除修改项目,参考集合是否也会被修改?

标签: wpf mvvm collections observable


【解决方案1】:

可以使用 CollectionViewSource 过滤,参考here

链接:Trigger Filter on CollectionViewSource

这不会清除原始集合。

【讨论】:

  • 谢谢。但是我在 WPF 中使用了一个可观察的集合作为列表视图和它。
  • 是的,它是 WPF 而不是 List,您可以使用 ObservableCollection。
  • @santhosh 查看更新的 SO 链接。它还涵盖了 MVVM 实现
  • @WPFUser 如果您对交互式帮助感兴趣,请随时访问WPF chat room。我们迎合带有 MVVM 的 WPF。
猜你喜欢
  • 2012-05-22
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
相关资源
最近更新 更多