2009-08-26 4 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

두 번째가 작동하지 않습니다. 위아래로 스크롤하면 모든 헤더 값이 무질서하게됩니다. 이것은 성능을 향상시키기위한 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