2010-05-24 62 views
0

我一直在使用WPF中的DataGrid,结果很好。但是,经过一些改变后,它现在给了我意想不到的结果。我有一个DataGrid在页面上。 DataContext被设置为List对象,该对象是从同一个WPF项目中存在的类创建的。空排在DataGrid的底部,添加新记录,可见Datagrid结果没有意义

AFTER:同一页上,同样DataGrid。但是现在List对象来自同一解决方案中的类库项目。 EXACT相同的代码,但它现在已被提取到类库中。数据网格底部的空行,添加新记录不是可见。

WTF?

+0

我仍然在寻找这个问题的答案。同样,班级或用户界面本身没有任何变化。我的VS解决方案拥有一个包含UI和类的项目。现在我有两个项目(原始的WPF和新的类库),类中的代码相同,但该类现在位于类库项目中。最终结果根本没有意义。 – 2010-06-04 00:00:25

回答

0

也许这是一些安全问题,甚至是错误我刚才读this:。

我发现,如果你以前访问的ListCollectionView的 CanAddRow一次 您可以使用神奇的CanUser集合, DataGrid的 的AddRows成为true。奇怪!

IEditableCollectionView ecv = new ListCollectionView(myRecordCache); 
bool b = ecv.CanAddNew; // dummy access 
MyGrid.DataContext = ecv; 
+0

我明白你在说什么,但是我没有以任何不同的方式设置DataContext。再一次,改变的* only *事物是产生对象列表的类的位置。 – 2010-06-04 15:55:08

+0

我给你的观点是因为你一贯的帮助。谢谢。 – 2010-06-04 16:21:39

0

它是什么样的列表?它的公开可见的接口允许添加项目,或者它是只读列表现在(例如IEnumerable,ICollection?

+0

它只是一个System.Collection.Generic List,没什么特别的。该列表本身由自定义对象组成。代码本身并没有改变,它只是从WPF项目中变成了一个类库项目 – 2010-05-24 20:02:50

+0

这不应该仅仅通过将你所绑定的属性的类移动到不同的程序集来实现,其他的东西一定会改变它。 – bitbonk 2010-05-25 04:26:34

+0

这确实是一个奇怪的部分 - 没有其他改变。我简直就是在解决方案中的两个项目之间拖放,将其从WPF项目中删除,然后将引用更改为新的类库,就是这样。它只是没有意义。 – 2010-06-03 23:56:47

0

当我设置DataGrid属性IsReadOnly =“True”时,我遇到了同样的问题检查是否有相同的设置并尝试删除它,看看会发生什么

+0

它是一个很好的建议,我试过了,但我得到了相同的(不需要的)结果。同样,UI端没有任何改变,唯一的区别是DataContext列表对象来自哪里。 – 2010-05-24 20:57:32

4

我想,我终于有了答案。基本上,我错了,我确实改变了班里的一小部分。当我读到这个答案时,“灯泡”继续:How do I create a new row in WPF DataGrid when it is bound to an XmlDataProvider?

底线:您绑定的类需要具有默认构造函数才能显示可编辑的行!

在我的代码中,我确实改变了构造函数(我完全忘记了这个),它没有默认值。将默认构造函数添加回类修复了问题。