WPF DataGrid не может Добавить строку, когда источник данных пуст

CanUserAddRows="True" только 'работы', когда уже существуют данные в ItemsSource из DataGrid. Если это именно так происходит, что нет никаких строк в исходном списке объектов, то DataGrid не отображает a placeholder строка для ввода новых объектов, даже при том, что я установил CanUserAddRows="True". Почему?!

Заранее спасибо, Trindaz

8
задан Dave Clemmer 16 September 2011 в 16:26
поделиться

1 ответ

Это кажется известным вопросом с DataGrid WPF. См. Обсуждение здесь (начиная с 4-го комментариев) Также кажется, что он фиксируется в .NET 4. Я сделал некоторые тесты для этой проблемы на 3,5 и 4 (бета2) каркасах. Пожалуйста, смотрите результаты ниже:

Сначала я определил 3 типа коллекций элементов:

public class TestGridItems0 : ArrayList
{
}

public class TestGridItems1 : List<TestGridItem>
{
}

public class TestGridItems2<T> : List<TestGridItem>
{
}

, где TestGridItem ниже:

public class TestGridItem
{
    public string One { get; set; }
    public string Two { get; set; }
    public string Three { get; set; }
}

.NET 3.5

TestGriditems0 и TestGriditems1 не показал пустую строку для пустой коллекции; где как TestGriditems2 работал нормально.

.NET 4

Только TestGriditems0 не показал линию для пустой коллекции; Другие 2 работали нормально.

XAML для сетки:

<my:DataGrid Name="dataGrid" AutoGenerateColumns="False" CanUserAddRows="True">
    <my:DataGrid.Columns>
        <my:DataGridTextColumn Binding="{Binding One}" Header="One" />
        <my:DataGridTextColumn Binding="{Binding Two}" Header="Two" />
        <my:DataGridTextColumn Binding="{Binding Three}" Header="Three" />
    </my:DataGrid.Columns>
</my:DataGrid>

Ниже приведено как источник элементов был назначен:

dataGrid.ItemsSource = new TestGridItems0();
dataGrid.ItemsSource = new TestGridItems1();
dataGrid.ItemsSource = new TestGridItems2<TestGridItem>();

Надеюсь, это поможет, считает

2
ответ дан 6 December 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: