绑定我的数据网格使用

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

出于某种原因,我在底部得到了一个空行。有时在网格中单击一些按钮和复选框后,会添加更多的空行。

为什么会这样?我怎么阻止它呢?


当前回答

尽管OP询问如何删除空行,但标题并不具体,当我试图弄清楚如何添加空行时,这篇文章出现在了我的搜索中。我发现,对于空行出现,它不仅需要有CanUserAddRows=“True”,但ItemsSource需要有一个默认构造函数公共MyClass(){}。

其他回答

如果你正在通过源代码创建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

如果你的支持集合实现了IEditableCollectionView从它的CanAddNew方法返回true, DataGrid会假设这就是你想要做的。

这里有一个很好的概述:WPF DataGrid中的编辑特性概述

它也适用于属性:

IsReadOnly="true"

听起来您可能已经将DataGrid的CanUserAddRows设置为true。只需添加

CanUserAddRows="false"

到XAML。

尽管OP询问如何删除空行,但标题并不具体,当我试图弄清楚如何添加空行时,这篇文章出现在了我的搜索中。我发现,对于空行出现,它不仅需要有CanUserAddRows=“True”,但ItemsSource需要有一个默认构造函数公共MyClass(){}。