WPF DataGrid set selectedItem - PullRequest
       8

WPF DataGrid set selectedItem

2 голосов
/ 11 июля 2011

Моя проблема в том, что я хочу установить selectedItem (отметить строку в сетке данных).Я много искал, и на самом деле я надеюсь, что есть лучшее решение вместо итерации по сетке данных.

мое предложение:

У меня есть число со значением 3, и я хочу, чтобыСтрока datagrid с номером 3 помечена .. Я попробовал это:

DataGridRow row = (DataGridRow)gridErrors.ItemContainerGenerator.ContainerFromItem(gridErrors.SelectedItem);

        if (row != null)
        {
            ErrorInfo info = row.Item as ErrorInfo;

            var blubb = from c in this.objectsToSync
                        where c.Number == info.Number
                        select c;

            if (blubb != null)
            {
                gridCsvContent.SelectedItem = blubb;
                gridCsvContent.ScrollIntoView(blubb);
                DataGridRow rowContent = (DataGridRow)gridCsvContent.ItemContainerGenerator.ContainerFromItem(gridCsvContent.SelectedItem);
                rowContent.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }    

Сначала я извлекаю DataGridRow, откуда мой номер (значение 3), затем у меня есть запрос linq, где я получаю объект счисло 3. Затем я хочу установить selectedItem, но потом оно будет нулевым.

Есть ли решение, в котором мне не нужно перебирать сетку данных ..?Есть ли способ установить выбранный пункт напрямую?

Заранее большое спасибо!кр

1 Ответ

1 голос
/ 11 июля 2011

К сожалению, вам придется перебирать коллекцию, чтобы соответствовать существующим данным в ячейке.

Если вы используете шаблон MVVM, вы можете переместить эту логику в ViewModel и работать с базовымданные напрямую.Вы можете создать свойство зависимостей для привязки SelectedItem.Я думаю, что вам все еще понадобится событие в коде для вызова ScrollIntoView.

...