2016-08-17 2 views
0

enter image description hereКак обновить DataGrid после того, как он уже был загружен?

выше показывает мой метод DataGrid.dataGrid_Loaded(), создавая пару «записей» и добавление их в список, что мой DataGrid использует свою систему «ItemsSource»

В строке 156 У меня есть еще один рекорд закомментировал (что после сетки.ItemsSource был установлен). Если я снова добавлю эту строку, мой код сломается. Должен быть способ обновить DataGrid новыми данными, но как?

Благодарим за помощь!

Когда я раскомментировать линии 156, я получаю:

Необработанное исключение типа «System.InvalidOperationException» произошло в PresentationFramework.dll

Дополнительная информация: ItemsControl несовместима с его источником элементов.

Для получения дополнительной информации см. Внутреннее исключение.

+2

Определите и объясните «мои кодовые разрывы». Какую проблему мы пытаемся решить? – Plutonix

+0

Почему бы вам не переместить линию, где вы складываете одну до установки элемента ItemsSource, или вы можете установить grid.ItemsSource = null, тогда раскомментируйте строку, а затем добавьте grid.ItemSource = записи после этого. – MethodMan

+0

@MethodMan Проблема, с которой я сталкиваюсь, заключается в том, что я не могу обновить ItemsSource без сбоя приложения. У меня есть строка, где это в качестве примера, в конечном итоге мой DataGrid будет обновлен данными, полученными через сокеты. – MrDysprosium

ответ

0

Вам нужно очистить ItemsSource перед изменением:

List<string> items = new List<string>() { "a", "b" }; 
dataGrid.ItemsSource = items; 

// some code 

dataGrid.ItemsSource = null; 
items.Add("c"); 
dataGrid.ItemsSource = items; 

// dataGrid contains: "a", "b", "c" 

Вы можете использовать ObservableCollection<T> и использовать связывание в вашем XAML - элементы будут автоматически обновляться.

Смежные вопросы