Silverlight: DataGrid, ItemsSource update
Добавлено: 30 ноя 2008, 09:55
Никто с Silverlight не работает?
Такая вот проблема у меня.
Cоздал объект ObservableCollection<string> mySource = new ObservableCollection<string>();
Напихал туда елементов: mySource.Add("111") ; mySource.Add("222") ; ...
Затем listbox.DataSource = mySource;
Работает замечательно.
Делаю следующее mySource[1]="updated";
Блеск! Немедленно вижу изменеиее в listBox!
Теперь меняем ListBox на DataGrid, а для DataSource создаем объект типа
ObservableCollection<Person> mySource = new ObservableCollection<Person>();
где Person это типичный класс с FirstName и т.д.
Создаем экземпляры класса Person, добавляем их в mySource , присваеваем коллекцию как DataSource
dataGrid.DataSource = mySource ;
Работает. Вижу в dataGrid содержимое mySource.
Теперь хочу поменять первую строку в dataGrid.
Создаю новый экземпляр класса Person типа :
Person p = new Person();
p.FirstName = "Dima";
P.Rang = "SuperStar";
....
и обнавляю первый элемент в mySource:
mySource[0] = p;
Опа, ошибка при исполнении кода, что -то вроде "недопустимая операция".
Пробую по другому:
mySource[0].FirstName = "Dima";
Ошибки нет. Но и на экране ничего не обновилось!
Кликаю на заголовок, происходит сортировка и вижу обновление.
Как можно сделать Refresh() для DataGrid ? Что не так?
Такая вот проблема у меня.
Cоздал объект ObservableCollection<string> mySource = new ObservableCollection<string>();
Напихал туда елементов: mySource.Add("111") ; mySource.Add("222") ; ...
Затем listbox.DataSource = mySource;
Работает замечательно.
Делаю следующее mySource[1]="updated";
Блеск! Немедленно вижу изменеиее в listBox!
Теперь меняем ListBox на DataGrid, а для DataSource создаем объект типа
ObservableCollection<Person> mySource = new ObservableCollection<Person>();
где Person это типичный класс с FirstName и т.д.
Создаем экземпляры класса Person, добавляем их в mySource , присваеваем коллекцию как DataSource
dataGrid.DataSource = mySource ;
Работает. Вижу в dataGrid содержимое mySource.
Теперь хочу поменять первую строку в dataGrid.
Создаю новый экземпляр класса Person типа :
Person p = new Person();
p.FirstName = "Dima";
P.Rang = "SuperStar";
....
и обнавляю первый элемент в mySource:
mySource[0] = p;
Опа, ошибка при исполнении кода, что -то вроде "недопустимая операция".
Пробую по другому:
mySource[0].FirstName = "Dima";
Ошибки нет. Но и на экране ничего не обновилось!
Кликаю на заголовок, происходит сортировка и вижу обновление.
Как можно сделать Refresh() для DataGrid ? Что не так?