Подтвердить что ты не робот

Как удалить пустую строку 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"}

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

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

4b9b3361

Ответ 1

У меня есть это

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

IsReadOnly="True"

Ответ 2

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

CanUserAddRows = "False"

Ответ 3

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