Я понимаю, что это старый пост. Но я хотел обратиться к этому в надежде, что это поможет другим. Для этого проекта я хотел иметь возможность выбирать записи для отдельной строки в виде сетки. Telerik GridView возвратил 5 столбцов, но коллекция (возвращенная из службы WCF) фактически содержала до 30 столбцов.
Я не собираюсь здесь рассматривать привязку данных только к тому, как был настроен выбор. Также этот sampel не следует шаблону (например, MVVM), поэтому для быстрого объяснения код был помещен в коде xaml.
Сначала мне нужно было зарегистрировать обработчики CollectionChangedEvent. Это происходило каждый раз, когда я выбирал строку в представлении Grid, она генерировала коллекцию в памяти всех элементов на основе выбранной строки.
this.myGridView.Loaded += (o, e) =>
{
this.myGridView.SelectedItems.CollectionChanged += new NotifyCollectionChangedEventHandler(SelectedItem_CollectionChanged);
};
И для измененного события SelectedItem_Collection
void Item_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
var index = e.NewItems[0] as myWCFService.Index;
currentItem = index.Item;
}
}
В основном здесь происходит, когда при выборе записи обнаруживаются элементы из выбранной строки (включая все элементы, не показанные в сетке). Это делается путем установки index = для e.NewItems [0] из моего веб-сервиса, который затем добавлен в новую коллекцию (currentItem) в памяти.
Примечание: currentItem был объявлен в основном классе как:
public myWCFService.Item currentItem;
Как только это было сделано, у меня была возможность передавать данные из выбранной строки (сохраненной в коллекции currentItem) в другие коллекции / элементы управления