【问题标题】:WPF Datagrid ItemSource + ObservableCollectionWPF Datagrid ItemSsource + ObservableCollection
【发布时间】:2012-10-19 10:21:41
【问题描述】:

我有一个显示来自 ObservableCollection 的所有数据的 Datagrid。但我只想显示 Datagrid 中的前 10 个元素。你能帮忙吗?

【问题讨论】:

  • 添加您的代码,然后确保有人可以提供帮助

标签: wpf datagrid observablecollection


【解决方案1】:

我假设你正在使用 MVVM.. 你可以尝试使用集合视图源..

 observableCollection = new ObservableCollection<string>();
 Items = CollectionViewSource.GetDefaultView(observableCollection.Take(10));

“Items”是视图模型中的属性,而“ItemsSource”是数据网格中的属性..

public ICollectionView Items { get; set; }

您可能必须在视图模型中包含几个命名空间

using System.Collections.ObjectModel;
using System.Windows.Data;

【讨论】:

  • 非常感谢您的回答,现在我没有使用 MVVM,它的代码在后面。我是 WPF 的新手。但我的下一步是使用 MVVM
  • 如果您不使用 MVVM,您仍然可以使用上述解决方案...如上更改您的代码并将“项目”分配为数据网格的项目源
  • 但是这个解决方案是不可观察的......就像如果有人在源可观察集合的前 10 个索引中添加一个元素,他们不会在 GUI 上更新。使用CollectionView.Filter = Func&lt;object, bool&gt;(item =&gt; sourceCollection.IndexOf(item) &lt; 9)
【解决方案2】:

假设您的 DataGrid 是 dg。 你可以试试:

int nbV = 10; //number you want
ItemCollection ic = new ItemCollection();
for(int k = 0; k < nbV; k++)
   {
      ic.Add(dg.Items[k]);
   }

dg.ItemsSource = ic.DefaultView;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2014-10-05
    • 2013-04-21
    • 2013-06-30
    • 2015-08-07
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多