【问题标题】:WPF DataGrid - row for new entry not visibleWPF DataGrid - 新条目的行不可见
【发布时间】:2010-12-07 10:54:16
【问题描述】:

问题是,DataGrid 中的空白行没有出现,因此用户无法添加数据。 代码如下:

System.Collections.ObjectModel.ObservableCollection<CoreVocabularyEntry> dataList = new System.Collections.ObjectModel.ObservableCollection<CoreVocabularyEntry>();
    public VocabularyToolWindow()
    {
        InitializeComponent();
        dataList.Add(new CoreVocabularyEntry { Foreign = "ja", Native = "ano" });
        ListCollectionView view = new ListCollectionView(dataList);
        WordsDataGrid.ItemsSource = dataList;
        WordsDataGrid.CanUserAddRows = true;
        MessageBox.Show(view.CanAddNew.ToString());
    }

我不明白为什么 view.CanAddNew 等于 false。这看起来像是一个非常标准的场景,所以我可能缺少一些明显的东西。有人可以告诉我代码有什么问题吗? CoreVocabularyEntry 就是如下:

public struct CoreVocabularyEntry : IVocabularyEntry
{
    #region IVocabularyEntry Members

    public string Foreign
    {
        get;
        set;
    }

    public string Native
    {
        get;
        set;
    }

    #endregion
}

谢谢,J.K.

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    这可能比上面更简单。当我没有默认构造函数时我遇到了这个问题,因此数据网格不知道如何添加新行。我唯一的构造函数涉及大量要提供的信息。转到组成 List 的对象并添加一个构造函数,例如: public MyClass(){} 希望这会有所帮助!

    【讨论】:

    • 谢谢!它帮助了我。
    【解决方案2】:

    WordsDataGrid.CanUserAddRows = true; 移到设置 DataGrid 的 ItemSource 的语句上方。

    编辑:

    刚刚注意到您没有实现IEditableObject。您需要这样做才能使用 DataGrid 的编辑功能。

    【讨论】:

    • 试过了,没用 :-(。我认为问题在于集合而不是 DataGrid 本身。(我尝试 List 得到相同的结果。
    • 哎呀,解决了错误的错误!在将其设置为 itemssource 之前获取 view.CanAddNew。在将它与 DataGrid 关联之前访问它的一些方法为我解决了这个问题。
    • 您可以只使用一个虚拟变量,例如 (bool dummy = view.CanAddNew)
    • 真的吗?我刚试了一下,并没有解决问题。你能帮我复制一下代码吗?谢谢
    • 查看我的编辑;抱歉,我真的需要在开始调试之前阅读您的代码!!! (我想这同样适用于我自己)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2010-10-14
    • 2011-02-27
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多