我使用wpftoolkit datagrid控件,并以这种方式进行绑定:
<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秒!
---
聚苯乙烯
我发现这个项目,也就是用类似的方式写的,但是即使绑定了5万条记录也没有ui挂在那里!我做错什么了?
更新
我认为这是因为scrollviewer包含了整个网格。但是为什么呢?