Пустая строка таблицы данных WPF внизу

202

Я связываю свою сетку данных, используя

//fill datagrid
public DataTable GameData
{
    get
    {
        DataSet ds = new DataSet();
        FileStream fs = new FileStream(IMDB.WebPage.Class.Config.XMLPath,
        FileMode.Open, FileAccess.Read);
        StreamReader reader = new StreamReader(fs, Encoding.Default);
        ds.ReadXml(reader);
        fs.Close();
        DataTable temp = ds.Tables[0];
        return ds.Tables[0];
     }
 }

По какой-то причине я получаю пустой ряд внизу. И иногда после нажатия на некоторые кнопки и флажки в сетке добавляются более пустые строки.

Почему это? И как мне это заблокировать?

WtFudgE
источник

Ответы:

448

Похоже, вы CanUserAddRowsустановили значение true для DataGrid. Просто добавь

CanUserAddRows="false"

в XAML.

Томи Джуннила
источник
13
имейте в виду, что даже если флажок в свойствах сетки не установлен, вы должны явно добавить эту строку кода, чтобы скрыть дополнительную строку (или установить и снять флажок)
Тобиас Валински,
6
Если вам не нужен код, добавьте атрибут CanUserAddRows = "False". Похоже на ошибку в WPF, которую вы должны явно установить в false.
ZZZ
У меня скорее противоположная проблема. Это не создает пустую строку, хотя я бы предпочел этого.
Шимми Вейцхандлер
21

Это также работает с атрибутом:

IsReadOnly="true"
Arti
источник
Это работало лучше, чем CanUserAddRows и CanUserDeleteRows
RDV
13

Если ваша резервная коллекция, которая реализует, IEditableCollectionViewвозвращает true из своего CanAddNewметода, DataGrid предположит, что это то, что вы хотите сделать.

Здесь есть хороший обзор: обзор функций редактирования в WPF DataGrid

Аластер Мо
источник
3

Если вы создаете DataGrid на лету через исходный код ...

DataGrid grid = new DataGrid();

grid.CanUserAddRows = false;

//... 
grid.AutoGenerateColumns = false;
grid.Margin = new Thickness(10,20,10,10);
grid.VerticalAlignment = VerticalAlignment.Top;
grid.ItemsSource = //... and so on
Веб-разработчик
источник
0

Хотя ОП спрашивал, как УДАЛИТЬ пустую строку, заголовок не является конкретным, и эта статья появилась в моем поиске, пытаясь выяснить, как ДОБАВИТЬ пустую строку. Я обнаружил, что для появления пустой строки требуется не только иметь, CanUserAddRows="True"но и ItemsSourceиметь конструктор по умолчанию public MyClass () { }.

Железный стержень
источник