【发布时间】: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