【问题标题】:WPF datagrid empty row at bottomWPF datagrid底部的空行
【发布时间】:2010-12-19 12:33:07
【问题描述】:

我使用绑定我的数据网格

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

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

这是为什么?我该如何阻止这个?

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

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

    CanUserAddRows="false"
    

    到 XAML。

    【讨论】:

    • 请记住,即使未选中网格属性中的复选框,您也必须显式添加该行代码以隐藏附加行(或选中并取消选中复选框)
    • 如果您不希望代码落后,请添加属性 CanUserAddRows="False"。它看起来像 WPF 中的一个错误,您必须将其显式设置为 false。
    • 我宁愿遇到相反的问题。它不会创建一个空行,而我更愿意这样做。
    【解决方案2】:

    它也适用于属性:

    IsReadOnly="true"
    

    【讨论】:

    • 这比 CanUserAddRows 和 CanUserDeleteRows 效果更好
    【解决方案3】:

    如果实现IEditableCollectionView 的支持集合从其CanAddNew 方法返回true,则DataGrid 将假定这是您想要做的。

    这里有一个很好的概述:Overview of the editing features in the WPF DataGrid

    【讨论】:

      【解决方案4】:

      如果您通过源代码即时创建 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
      

      【讨论】:

        【解决方案5】:

        虽然 OP 询问如何删除空行,但标题并不具体,这篇文章出现在我的搜索中,同时试图弄清楚如何添加空行。我发现,要出现空行,它不仅需要有CanUserAddRows="True",而且ItemsSource 需要有一个默认构造函数public MyClass () { }

        【讨论】:

        • 非常感谢!
        猜你喜欢
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-30
        • 2020-12-15
        相关资源
        最近更新 更多