【问题标题】:WPF DataGrid sort when Item source on DataGrid changes当 DataGrid 上的项目源更改时 WPF DataGrid 排序
【发布时间】:2014-08-28 19:46:48
【问题描述】:

有谁知道当网格的 Itemsource 发生变化时如何对 Datagrid 进行排序?即,如果我有一个产品 DataGrid 和另一个产品版本网格,当我选择一个产品时,产品版本 DataGrid 的 ItemSource 会改变,所以我想在数据出现在 Product Versions DataGrid 中之前进行排序。

我目前进行排序的方式是。

<CollectionViewSource x:Key="cvsProductVersions" 
     Source="{Product.ProductVersions, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
     Filter="CollectionViewSource_Filter">
     <!--<CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="Build1"  Direction="Descending"/>
     </CollectionViewSource.SortDescriptions>-->
  </CollectionViewSource>

我觉得我需要使用

CollectionViewSource.GetDefaultView(dgProductVersion.ItemsSource).Refresh();

但是,我需要一个事件,它基本上意味着“一旦将新的 itemsource 应用于表,就运行此代码。

干杯

【问题讨论】:

  • 如何设置DataGrid版本的ItemSource?你能显示这个 DataGrid 的 XAML 吗?

标签: c# wpf xaml sorting datagrid


【解决方案1】:

在某个阶段,我猜您将集合设置为您的CollectionViewSourceItemsSource 属性值。为什么不直接使用LinQ 对其进行排序将其分配给CollectionViewSource?:

SomeCollection = new ObservableCollection(SomeCollection.OrderBy(i => i.Build));

可以直接刷新CollectionViewSource,但这通常不是用户想要的,因为它会进行完全刷新...您可以尝试以下操作:

(dgProductVersion.ItemsSource as ListCollectionView).Refresh();

第三个选项可以在 Dr. WPF 网站上的ItemsControl: 'E' is for Editable Collection 中找到。

【讨论】:

  • 我喜欢 LINQ 的想法,我在 XAML 中分配了 collectionViewSource,有没有办法我仍然可以通过 LINQ 做到这一点?我已经更新了有问题的代码。干杯
  • 不用担心,我已经做到了,最好在 MVVM 中使用 LINQ 做到这一点。干杯!
猜你喜欢
  • 2016-06-24
  • 2011-11-10
  • 1970-01-01
  • 2011-06-29
  • 2012-06-22
  • 2013-12-31
  • 2015-12-14
  • 1970-01-01
  • 2012-05-01
相关资源
最近更新 更多