как получить сетку данных инструментария wpf для отображения новых строк при привязке к набору данных - PullRequest
2 голосов
/ 18 ноября 2009

Есть ли способ получить набор инструментов wpf DataGrid для отображения новых строк, когда он связан с DataSet? Другими словами, у меня есть DataGrid, я установил ItemsSource на DataTable, и все, кажется, работает нормально, за исключением того, что я не могу заставить сетку отображать строки, которые я добавляю к DataTable программно.

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

Вы можете установить datagrid.ItemsSource на ObservableCollection<T>.

ObservableCollection<YourItem> items = new ObservableCollection<YourItem>();
yourDataGrid.ItemsSource = items;

Тогда вы сможете добавить в коллекцию новые строки:

Редактировать: на основе обновленной информации.

if (Dispatcher.CheckAcces())
{
    // already on thread UI control was created on
    items.Add(<your item>);
}
else
{
    // update on same thread UI control was created on
    // BeginInvoke would invoke a delegate which would call items.Add(<your item>)
    Dispatcher.BeginInvoke(...);
}

См. Диспетчер . Все System.Windows.UserControl объекты имеют свойство Dispatcher.

0 голосов
/ 18 ноября 2009

Я не уверен, как кто-то мог понять это, тем более что я об этом не упомянул, но проблема заключалась в том, что я обновлял набор данных из потока, отличного от основного потока формы, то есть потока, который Сетка была создана на. Вы можете делать обновления из другого потока, но вы не можете делать вставки, хотя я не знаю почему. Если бы кто-то мог пролить свет на это, я был бы признателен. Я предполагаю, что сетка проверяет, входит ли вставка в другой поток, и если да, то игнорирует ее, потому что это вызовет исключение.

...