2011-06-17 63 views
0

假设我有选择一行Data Grid提供VS2010。WPF数据网格: - 遍历每一行或记录(C#4.0)

现在假设我需要只有选定的行下方的记录那么我该怎么办?

我认为这可以通过迭代遍历Data Grid的每一行。但如何?

这是为什么?因为

假设我已经绑定了一个集合到datagrid。

现在我使用列Data Grid头重新排序Data Grid

Then Data Grid中的记录是重新排列,但下层集合中的记录保持无序。

手段重新排序没有不是在说谎收集影响。

所以我不能使用它获取所选行下的记录

注:这里需要重排序时

谢谢...

回答

1

你可以得到它包装原始集合和其中的顺序发生使用CollectionViewSource.GetDefaultViewCollectionView

你的DataGrid需要与当前项目进行同步,那么你得到的位置,并获取对象紧接着,例如: -

<DataGrid IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Data}" /> 
var view = CollectionViewSource.GetDefaultView(Data) as ListCollectionView; 
if (view != null) 
{ 
    var i = view.CurrentPosition; 
    var nextEmp = view.GetItemAt(i + 1) as Employee; 
    if (nextEmp != null) 
    { 
     nextEmp.Name = "Steve!"; 
    } 
} 
+0

谢谢你这么多,这是确切的答案。但是没有任何LINQ查询会在“view”上触发时将当前选定的所有记录提供给最后一个“view”记录。谢谢.. – Pritesh 2011-06-17 12:00:31