如何使WPF数据网格的第一行成为自动添加新行

时间:2013-01-23 21:02:06

标签: c# wpf c#-4.0 wpfdatagrid

我有一个实现INotifyPropertyChanged的简单类:

class Revision {

 - int Id
 - string Description

}

然后,我有另一个类,它包含上述“Revision”类的可观察集合:

ObservableCollection<Revision> revisionList = new ObservableCollection<Revision>();

在我的UI中,我有一个Datagrid,它与上面的“revisionList”双向绑定,自动生成列并显示一个空行,以便我可以添加新行。

但是,我想让datagrid做的是将空白的新行行作为网格的第一行而不是最后一行,之后,我希望下一行是所有的内部版本对象。 “revisionList”,按“Id”属性排序,降序。

为了更清楚,假设我在“revisionList”中有3个修订版,我得到的是这样的默认数据网格:

 ----------------------------------
|  Id  |        Description        |
 ----------------------------------
|  0   |   Revision 00             |
 ----------------------------------
|  1   |   Revision 01             |
 ----------------------------------
|  2   |   Revision 02             |
 ----------------------------------
|  < blank add new revision line > |
 ----------------------------------

我想要的是数据网格是这样的:

 ----------------------------------
|  Id  |        Description        |
 ----------------------------------
|  < blank add new revision line > |
 ----------------------------------
|  2   |   Revision 02             |
 ----------------------------------
|  1   |   Revision 01             |
 ----------------------------------
|  0   |   Revision 00             |
 ----------------------------------

有什么方法可以设置数据绑定,或者我可以使用的数据网格上的任何事件,以便数据网格会自动运行?

1 个答案:

答案 0 :(得分:0)

我不知道如何加载你的可观察集合,但如果你使用for循环你可以在加载之前添加空白版本,然后从顶部开始使用for循环。

 var blankRevision = new Revision(); 
 revisionList.add(blankRevision);

 for (int i = YourDataSource.Count; i > 0; i--) {

      revisionList.add(YourDataSource[i-1]);
 }

如果这没有用,还有其他方法可以做到这一点。此外,可能更有帮助的是不要让您的数据网格自动生成,而是制作一些DataGridTextColumns并将id和description绑定到列,这将允许对列进行更多自定义。