我的数据网格有许多以编程方式添加的列。
dgData.Columns.Add(new DataGridTextColumn { Width=50, Header = e.Naam, Binding = new Binding(String.Format("Figures[{0}]", e.Id)) });
设置为数据网格的项目源的集合是数据项的集合
public class Data
{
private string _set = "";
public string Set
{
get { return _set; }
set { _set = value; }
}
private Dictionary<long, int> _figures;
public Dictionary<long, int> Figures
{
get { return _figures; }
set { _figures = value; }
}
}
当我将集合设置为 itemssource 时,数据网格需要很长时间才能填充数据,有时(大约 25 列)长达 30 秒或更长时间!
我的 XAML 非常干净:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="dgData">
<DataGrid.Columns>
<DataGridTextColumn Header="Set" Binding="{Binding Set}" Width="100"/>
</DataGrid.Columns>
</DataGrid>
有什么技巧可以提高此绑定(bind)的性能吗? 如果我在创建列时删除绑定(bind),它执行正常!
最佳答案
请尝试将 EnableColumnsVirtualization
和 EnableRowVirtualization
属性设置为 true,至少这会提高填充性能,但滚动仍然会很慢。
关于c# - WPF DataGrid 绑定(bind)性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7025434/