Обновление отдельного элемента в DataSrid ItemsSource - PullRequest
3 голосов
/ 11 марта 2011

У меня есть простая проблема, которая, вероятно, имеет простой ответ.У меня есть DataGrid, отображающий некоторые элементы.Я хочу обновить один из элементов, например, так:

var old = (SomeClass)grid.SelectedItem;
var newItem = new SomeClass(...);
old = newItem;
//grid.Items.Refresh();

Сначала в примере тривиализируется код, но это важный бит (реальная проблема заключается в обновлении объекта через Linq2Sql, а затем в настройкестарый объект к обновленному).

В любом случае, я надеялся, что вызов Items.Refresh обновит пользовательский интерфейс сетки, но это не так.Я, конечно, что-то упускаю из-за того, как DataGrid кэширует свои элементы ItemsSource, но я думаю, что это довольно распространенный сценарий.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Вам потребуется получить ItemSource вашей Grid и обновить правильный элемент внутри ItemSource.Прямо сейчас вы делаете копию выбранного элемента и обновляете его, чтобы он ничего не делал.

Я не уверен в точном синтаксисе, но вам нужно что-то вроде

((IEnumerable)grid.ItemsSource)[grid.SelectedIndex] = newItem;  
1 голос
/ 11 марта 2011

Вам нужно будет изменить элемент в ItemsSource.И даже это будет работать, только если элемент является либо DependecyObject, либо реализует INotifyPropertyChanged

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...