0
我做了一個簡單示例,它顯示了SL4和SL5測試版上DataGrid的低性能。 作爲佈局根我有當水平滾動時,DataGrid在SL4和SL5測試版上過於緩慢
<sdk:DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="dataGrid1" />
然後在代碼我設置:
dataGrid1.RowHeight = 30;
dataGrid1.MaxColumnWidth = 200;
dataGrid1.MinColumnWidth = 200;
dataGrid1.RowHeaderWidth = 10;
然後,我創建DataGridTextColumn類型的50列:
for(int i=0; i<50; i++) {
DataGridTextColumn col = new DataGridTextColumn {
Header = "Column "+i,
CanUserReorder = true,
CanUserResize = true,
CanUserSort = true,
MinWidth = colWidth,
MaxWidth = colWidth,
Width = new DataGridLength(colWidth, DataGridLengthUnitType.Pixel),
Binding = new Binding(string.Format("C{0}", i)),
};
dataGrid1.Columns.Add(col);
}
然後100行:
private void CreateRows()
{
var rows = new ObservableCollection<RowInfo>();
for(int i=0; i<100; i++) {
RowInfo row = new RowInfo();
for(int j=0; j<50; j++) {
typeof(RowInfo).GetProperty("C"+j).SetValue(row, Guid.NewGuid().ToString(), null);
}
rows.Add(row);
}
dataGrid1.ItemsSource = rows;
}
RowInfo是包含樣特性的簡單對象:
public string C0 { get; set; }
... till
public string C49 { get; set; }
當我運行應用程序,並得到它把我的瀏覽器選項卡完全電網。 但是,當我水平滾動直到結束 - 它變得太慢,CPU使用率超過60%。 第二次滾動會更快一些,但仍然很慢。 這對我們的應用程序至關重要。 您有關於如何提高性能的建議嗎?
這些屬性存在於WPF DataGrid上,而不是SL DataGrid上。 – 2011-05-18 08:15:28
(抱歉,延遲,家庭緊急情況)嗯,我必須在Telerik的RadGridView上測試過,因爲我只在SL中工作。 – 2011-05-22 21:14:52