【发布时间】:2010-05-04 13:38:34
【问题描述】:
我正在使用 WPFToolkit 数据网格控件并以这种方式进行绑定:
<WpfToolkit:DataGrid x:Name="dgGeneral" SelectionMode="Single"
SelectionUnit="FullRow"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
Grid.Row="1" ItemsSource="{Binding Path=Conversations}" >
public List<CONVERSATION> Conversations
{
get { return conversations; }
set
{
if (conversations != value)
{
conversations = value;
NotifyPropertyChanged("Conversations");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public void GenerateData()
{
BackgroundWorker bw = new BackgroundWorker();
bw.WorkerSupportsCancellation = bw.WorkerReportsProgress = true;
List<CONVERSATION> list = new List<CONVERSATION>();
bw.DoWork += delegate { list = RefreshGeneralData(); };
bw.RunWorkerCompleted += delegate
{
try
{
Conversations = list;
}
catch (Exception ex)
{
CustomException.ExceptionLogCustomMessage(ex);
}
};
bw.RunWorkerAsync();
}
在将窗口的 DataCotext 设置为包含 GenerateData() 的类实例之后,我在主窗口中调用 GenerateData()。
RefreshGeneralData() 返回一些我想要的数据列表,它会快速返回。
总体而言,有近 2000 条记录和 6 列(我没有发布我在网格初始化期间使用的代码,因为我认为这不是原因)并且网格挂起近 10 秒!
---
PS 我找到了项目,写法类似,但即使绑定50000条记录也是在没有UI的情况下完成的!我在做什么错?
更新我认为这是因为 ScrollViewer,其中包含整个网格。但为什么?
【问题讨论】:
-
问题是:如何加快绑定速度?
-
或者你可以给我一个方向..关于如何正确地将数据绑定到数据网格。我是 WPF 新手,没想到会出现这种问题