2009-08-26 28 views
7

私はDataGridを持っています。私は単純に1 2 3 4 ...行に、私は他のデータバインディングから作成されている行数まで表示する列が欲しいです。WPF Datagrid行番号

<dg:DataGridTextColumn Header="#" IsReadOnly="True" 
              Binding="...."   /> 
+0

データグリッドの属性として答えを見つけ、先頭の数値の列を表示しました。私は実際の属性を忘れています。 –

+4

あなたは忘れていますか?それは役に立たない。あなたのプログラムを見るのにちょっと時間がかかりませんか? – JohnB

答えて

3

今日、私はこの回答のためにMSDNのドキュメントやその他のスレッドを調べてみました。私がこれを実装する方法は、DataGridがバインドされているコレクション内のオブジェクトの行番号に対して特に作成したプロパティをバインドする方法です。例えば

public class myItem 
{ 
    public int LineNumber { get; set; } 
    // rest of your object... 
} 

手動でオブジェクトに行番号を手動で設定する必要があります。

行番号を追加する別の方法は、hereです。ここでは、コードです:

datagrid.LoadingRow += 
    new EventHandler<DataGridRowEventArgs>(datagrid_LoadingRow); 

... 
void datagrid_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    e.Row.Header = e.Row.GetIndex(); 
} 

この実装は、行ヘッダーに行番号を置くと、ちょうどあなたのオブジェクト内の行番号のプロパティを配置する必要はありません。ただし、データグリッドから行を挿入または削除する必要がある場合は、行番号は更新されません。

+1

2つ目は機能しません。上下にスクロールすると、すべてのヘッダー値が乱れることになります。これは、パフォーマンスを向上させるためのDataGridの内部動作によるものです。 – Gopinath

+0

のディスカッションをご覧ください: http://stackoverflow.com/questions/4663771/wpf-4-datagrid-getting-the-row-number-into-the-rowheader/4663799#comment14001342_4663799 仮想化の設定に基づいて、異なるバージョンのDataGridでは動作しない可能性があります。 – Tony

+0

MSSQL Server 2005+を使用している場合は、以下を試すことができます。http://msdn.microsoft.com/en-us/library/ms186734.aspx – nvcnvn