Как удалить пустую строку DataGrid при привязке к ObservableCollection <T>? - PullRequest
39 голосов
/ 27 августа 2009

Я схожу с ума здесь с этим:

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, но я не уверен, что это как-то связано с ним.

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

Ответы [ 3 ]

83 голосов
/ 21 февраля 2011

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

CanUserAddRows = "False"

19 голосов
/ 27 августа 2009

У меня есть

в Datagrid XAML, укажите атрибут:

IsReadOnly="True"
2 голосов
/ 27 марта 2015

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

...