2

私は実装する単純なクラスを持っていますINotifyPropertyChanged:

class Revision {

 - int Id
 - string Description

}

次に、上記の「リビジョン」クラスの監視可能なコレクションを保持する別のクラスがあります。

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

私のUIには、上記の「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             |
 ----------------------------------

データグリッドが自動的にこのように動作するように、データバインディング、または使用できるデータグリッド上のイベントを設定する方法はありますか?

4

1 に答える 1

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 と説明を列にバインドして、列をさらにカスタマイズできるようにする方が役立つ場合があります。

于 2013-01-23T23:54:20.483 に答える