225

I bind my datagrid using

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

For some reason I get an empty row at the bottom. And sometimes after clicking on some buttons and checkboxes in the grid, more empty rows are added.

Why is this? And how do I block this?

5 Answers 5

508

Sounds like you probably have CanUserAddRows set to true for the DataGrid. Just add

CanUserAddRows="false"

to the XAML.

Sign up to request clarification or add additional context in comments.

3 Comments

keep in mind that even if the check box in the grid's properties is unchecked you have to explicitly add that line of code to hide the additional row (or check and uncheck the check box)
If you don't want code behind, add attribute CanUserAddRows="False". It looks like a bug in WPF that you have to set it to false explicitly.
I rather have the opposite problem. It does not create an empty row, while I'd rather want that.
28

It also works with the attribute:

IsReadOnly="true"

1 Comment

This worked better than CanUserAddRows & CanUserDeleteRows
14

If your backing collection that implements IEditableCollectionView returns true from its CanAddNew method, the DataGrid will assume that is what you want to do.

There's a good overview here:Overview of the editing features in the WPF DataGrid

Comments

3

If you're creating DataGrid on-the-fly through 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

1 Comment

If you do this while using WPF, you're doing it wrong.
3

Though the OP was asking how to REMOVE the empty row, the title isn't specific, and this article appeared in my search while trying to figure out how to ADD the empty row. I found that, for the empty row to appear, it not only needs to have CanUserAddRows="True" but the ItemsSource needs to have a default constructor public MyClass () { }.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.