可排序对象集合

时间:2011-02-09 16:00:13

标签: c# wpf

我正在寻找一些方向。

我需要一个Sortable对象集合,当我将它绑定到菜单项作为我的应用程序中打开的窗口列表时,它也可以通知何时从该集合中添加/删除项目。

有人可以建议哪个是好的收藏类型,即List<&gt ;, ObservableCollection等等,以及我如何对所述收集品进行排序。

非常感谢提前。

4 个答案:

答案 0 :(得分:2)

This is sortable observable collection

And here is another implementation - 我在我的项目中使用了这个,完美地工作(我只需要extend it所以它也实现了IList接口,所以它可以用来在XAML中定义集合。) p>

答案 1 :(得分:1)

您可以尝试将ObservableCollection包装在CollectionView中,通知将被传播,您可以对项目进行排序,过滤和分组。

请注意,如果您需要将更改设置为永久性,则排序不会修改源集合,这可能是一个问题,然后仅在昨天我第一次使用该类,所以不太了解它,也许你可以某种方式将排序应用于源。

答案 2 :(得分:0)

您是否尝试过将System.Windows.Forms.BindingSourceSystem.Windows.Forms.BindingNavigator一起使用?这些将完全符合您的需要 - 将对象集合绑定到可导航菜单。

至于排序,您只需要获取BindingSource项的列表,清除BindingSource,对列表进行排序,然后再将已排序的项添加到BindingSource。

请参阅以下链接以获取有用的示例:

答案 3 :(得分:0)

感谢所有回复。

能够简化事情,因为我意识到我只需要在绑定到菜单项时为了显示目的而对集合进行排序。

因此,在这种情况下,我可以使用以下代码通过菜单项parent(miPanels)对我的面板对象列表进行排序。 (PanelName是对象的属性之一)

 miPanels.Items.SortDescriptions.Add(new SortDescription("PanelName", ListSortDirection.Ascending));

再次感谢所有花时间寻找和回应的人。