gpt4 book ai didi

datatable - WPF BindingListCollectionView 到 ListCollectionView(数据表作为 ItemsSource)

转载 作者:行者123 更新时间:2023-12-02 17:55:08 24 4
gpt4 key购买 nike

我想在具有 DataTable 作为 ItemsSource 的 ListView 上进行自定义排序:

myListView.ItemsSource = (data as DataTable);

这是我的排序函数的第一行:

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

ListCollectionView coll = (ListCollectionView)CollectionViewSource.GetDefaultView(view);

第二行抛出一个类似于:

无法将“System.Windows.Data.BindingListCollectionView”转换为“System.Windows.Data.ListCollectionView”

有人有解决办法吗?谢谢 4 个答案

最佳答案

它返回一个 ICollectionView,而不是 ListCollectionView。您很可能需要 View 之上的 View 来获取 ListCollectionView 所具有的功能。由于 ICollectionView 实现了 CollectionChanged,因此您不会想使用 BindingListCollectionView。

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

ListCollectionView coll = new ListCollectionView(CollectionViewSource.GetDefaultView(view));

虽然替代方案是:

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

BindingListCollectionView coll = new BindingListCollectionView(view);

如果您只想要一个 View 。

如果直接绑定(bind)到 WPF 控件,最好直接绑定(bind)到它而不创建 BindingListCollectionView/ListCollectionView,因为 DefaultView 已经允许对 DataTable 进行排序。

Binding binding = new Binding() { Source = (myListView.ItemsSource as DataTable) };

this.myListView.SetBinding(myListView.ItemsSourceProperty, binding);

DataView view = (myListView.ItemsSource as DataTable).DefaultView;

view.Sort = "Age";

希望对您有帮助,

塔姆斯罗伊斯

关于datatable - WPF BindingListCollectionView 到 ListCollectionView(数据表作为 ItemsSource),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2890371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com