Datagrid baris kosong WPF di bagian bawah

202

Saya mengikat datagrid saya menggunakan

//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];
     }
 }

Untuk beberapa alasan saya mendapatkan baris kosong di bagian bawah. Dan kadang-kadang setelah mengklik beberapa tombol dan kotak centang di grid, lebih banyak baris kosong ditambahkan.

Kenapa ini? Dan bagaimana saya memblokir ini?

WtFudgE
sumber

Jawaban:

448

Kedengarannya seperti Anda mungkin telah CanUserAddRowsmengatur true untuk DataGrid. Cukup tambahkan

CanUserAddRows="false"

ke XAML.

Tomi Junnila
sumber
13
Ingatlah bahwa meskipun kotak centang di properti grid tidak dicentang, Anda harus menambahkan baris kode secara eksplisit untuk menyembunyikan baris tambahan (atau centang dan hapus centang kotak centang)
Tobias Valinski
6
Jika Anda tidak ingin kode di belakang, tambahkan atribut CanUserAddRows = "False". Sepertinya ada bug di WPF yang harus Anda setel ke false secara eksplisit.
ZZZ
Saya lebih suka memiliki masalah sebaliknya. Itu tidak membuat baris kosong, sementara saya lebih suka itu.
Shimmy Weitzhandler
21

Ini juga berfungsi dengan atribut:

IsReadOnly="true"
Arti
sumber
Ini bekerja lebih baik daripada CanUserAddRows & CanUserDeleteRows
RDV
13

Jika koleksi dukungan Anda yang mengimplementasikan IEditableCollectionViewmengembalikan true dariCanAddNew metodenya, DataGrid akan menganggap bahwa itulah yang ingin Anda lakukan.

Ada ikhtisar yang baik di sini: Tinjauan umum fitur pengeditan di WPF DataGrid

Alastair Maw
sumber
3

Jika Anda membuat DataGrid saat bepergian melalui Source Code ...

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
Pengembang Web
sumber
0

Meskipun OP bertanya bagaimana MEMINDAHKAN baris yang kosong, judulnya tidak spesifik, dan artikel ini muncul dalam pencarian saya sambil mencoba mencari cara untuk menambahkan baris yang kosong. Saya menemukan bahwa, agar baris kosong muncul, tidak hanya perlu memiliki CanUserAddRows="True"tetapi ItemsSourcekebutuhan untuk memiliki konstruktor default public MyClass () { }.

Batang besi
sumber