Как удалить пустую строку DataGrid при привязке к ObservableCollection‹T›?

Я схожу с ума вот с этим:

ObservableCollection<Employee> list = new ObservableCollection<Employee>();
dgEmployees.ItemsSource = list;

Когда вы отлаживаете переменную списка, она пуста (list.Count = 0), но затем я привязываю ее к DataGrid (WPFToolkit), она показывает мне пустую строку.

В непосредственном окне для dgEmployees.Items отображается:

dgEmployees.Items[0]
{NewItemPlaceholder}

а также

dgEmployees.Items[0].GetType()
{Name = "NamedObject" FullName = "MS.Internal.NamedObject"}
[System.RuntimeType]: {Name = "NamedObject" FullName = "MS.Internal.NamedObject"}

Кажется, это произошло после того, как я поместил эту сетку данных в TabControl, но я не уверен, что это как-то связано с этим.

Кто-нибудь знает, как удалить эту пустую строку?


person Junior Mayhé    schedule 26.08.2009    source источник
comment
Вы должны принять другой ответ, он лучше вашего   -  person reggaeguitar    schedule 12.12.2014


Ответы (3)


Та же проблема сохраняется в версии DataGrid WPF 4.0 и вызвана добавлением новой строки, которая автоматически отображается для ObservableCollection ItemsSource. Установка IsReadOnly как True ИМХО слишком радикальна.
Я решил эту проблему, отключив свойство CanUserAddRows, если вам не нужно такое поведение, но вы все равно хотите, чтобы ячейки изменялись:

CanUserAddRows="Ложь"

person Pablonete    schedule 21.02.2011
comment
согласен, если это действительно не только для чтения, тогда это кажется убийственным. - person Jon; 23.03.2011
comment
Спасибо, этот ответ помог мне намного больше, чем IsReadOnly, который в моем случае имел некоторые побочные эффекты, которых я не хотел. - person Dessus; 07.07.2013
comment
Можем ли мы пометить это как ответ, поскольку IsReadOnly имеет побочные эффекты, а это нет? - person Shreyas; 23.12.2014

я понял

в Datagrid XAML поместите атрибут:

IsReadOnly="True"
person Junior Mayhé    schedule 26.08.2009

Комбинация CanUserAddRows="False" и IsReadOnly="True" лучше, чтобы избежать дополнительных неудобств.

person Sawarkar vikas    schedule 27.03.2015
comment
вы предлагаете ему использовать две перекрывающиеся функции, где будет достаточно любой из них, и на самом деле IsReadOnly = true удалит другие функции без каких-либо выгод. - person NappingRabbit; 24.10.2017