2009-08-26 121 views
7

我有一個數據網格。我想要一列只顯示1 2 3 4 ...在行中,最多可以從我的其他數據綁定創建的行數。WPF Datagrid行號

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

我找到了答案,作爲datagrid的一個屬性來顯示前導數字列。我忘記了實際的屬性。 – 2009-09-28 03:33:04

+4

你忘了?這是沒用的。你不能花一秒鐘看看你的節目嗎? – JohnB 2011-01-11 19:36:15

回答

3

我已經花了很多時間今天通過MSDN文檔和其他線程查看此答案。我已經解決了實現這個問題的方式,它綁定了一個屬性(我創建的),專門用於數據網格綁定到的集合中對象的行號。例如

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 2010-04-21 12:11:04

+0

請參閱: http://stackoverflow.com/questions/4663771/wpf-4-datagrid-getting-the-row-number-into-the-rowheader/4663799#comment14001342_4663799 有關爲什麼這可能或可能無法在基於虛擬化設置的不同DataGrid版本上運行。 – Tony 2012-05-26 22:47:09

+0

如果您使用的是MSSQL Server 2005+,則可以嘗試:http://msdn.microsoft.com/en-us/library/ms186734.aspx – nvcnvn 2012-06-25 13:30:18