C# Wpf多列表视图';s绑定到具有不同排序描述的同一集合
我有一个应用程序,允许用户创建同一用户控件的多个实例,该控件包含绑定到自定义数据类型的ObservableCollection的listview。当用户单击标题时,我的listview排序正确,但是它对绑定到ObservableCollection的所有视图进行排序 我的问题是,是否有任何方法可以在ObservableCollection的单独视图上实现排序,或者是否有另一种方法可以克隆ObservableCollection的内容(注意:ObservableCollection不断地被后台服务添加到中,必须实时显示) 我将收集整理如下:C# Wpf多列表视图';s绑定到具有不同排序描述的同一集合,c#,wpf,listview,sorting,C#,Wpf,Listview,Sorting,我有一个应用程序,允许用户创建同一用户控件的多个实例,该控件包含绑定到自定义数据类型的ObservableCollection的listview。当用户单击标题时,我的listview排序正确,但是它对绑定到ObservableCollection的所有视图进行排序 我的问题是,是否有任何方法可以在ObservableCollection的单独视图上实现排序,或者是否有另一种方法可以克隆ObservableCollection的内容(注意:ObservableCollection不断地被后台服务
ICollectionView dataView = CollectionViewSource.GetDefaultView(sourceList.ItemsSource);
dataView.SortDescriptions.Clear();
SortDescription sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
myListView.ItemsSource = ServiceManager.Instance.ActiveObjects;
我的列表视图的项目源设置如下:
ICollectionView dataView = CollectionViewSource.GetDefaultView(sourceList.ItemsSource);
dataView.SortDescriptions.Clear();
SortDescription sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
myListView.ItemsSource = ServiceManager.Instance.ActiveObjects;
我不希望维护同一个ObservableCollection的多个实例。这是一项要求,用户能够拥有此用户控件的多个实例,因此不幸的是,我无法以简单的方式绕过此问题,并将它们限制为单个实例
在此方面的任何帮助都将不胜感激,请提前感谢。您的错误是将
ItemsSource
属性直接设置为ServiceManager.Instance.ActiveObjects
属性:
myListView.ItemsSource = ServiceManager.Instance.ActiveObjects;
相反,您应该为每个ListView
从数据集合中创建一个单独的ICollectionView
实例。此示例改编自下面链接的页面:
private ICollectionView _customerView;
public ICollectionView Customers
{
get { return _customerView; }
}
public CustomerViewModel()
{
IList<YourClass> customers = ServiceManager.Instance.ActiveObjects;
_customerView = CollectionViewSource.GetDefaultView(customers);
}
private ICollectionView\u customerView;
公共ICollectionView客户
{
获取{return\u customerView;}
}
公共CustomerServiceModel()
{
IList customers=ServiceManager.Instance.ActiveObjects;
_customerView=CollectionViewSource.GetDefaultView(客户);
}
您可以在WPF Tutorial.NET网站的页面上找到更多详细信息。您不需要多个ObsevableCollection实例,实际上您需要的是视图或CollectionView。每个列表都应该有一个单独的CollectionView作为ItemsSource。要创建CollectionView,可以使用CollectionView的构造函数。