Сетка данных WPF: итерация по каждой строке или записи (C # 4.0) - PullRequest
0 голосов
/ 17 июня 2011

Предположим, у меня есть , выберите одну строку в Data Grid, предоставленном VS2010.

Теперь предположим, что мне нужно только записи ниже выбранной строки тогда что я должен сделать?

я думаю, что это можно сделать с помощью итерации по каждой строке Data Grid. Но как?

Почемуэтот?Потому что

Предположим, я привязал одну коллекцию к сетке данных.

А теперь я переупорядочиваю Data Grid, используя заголовок столбцов из Data Grid.

Тогда записи в Data Grid будут переупорядочены , но записи в нижележащей коллекции остаются неупорядоченными.

Значит изменение порядка не влияет на скрытую коллекцию .

Так что Я не могу использовать для получения записей ниже выбранной строки.

ПРИМЕЧАНИЕ: здесь необходимо изменить порядок

Спасибо…

1 Ответ

1 голос
/ 17 июня 2011

Вы можете получить CollectionView, который оборачивает оригинальную коллекцию и в котором упорядочение происходит, используя CollectionViewSource.GetDefaultView.

Ваша 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!";
    }
}
...