Im используя управление WPFToolkit Datagrid и делать связывание таким образом:
Повесьте во привязки данных большого объема данных в WPF 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();
}
И чем в основной window Я вызываю GenerateData() после установки DataCotext окна в экземпляр класса, содержащего GenerateData().
RefreshGeneralData() возвращает некоторый список данных, которые я хочу, и он быстро их возвращает.
В целом есть около 2000 записей и 6 столбцов (им не выставлять код, который я использовал при инициализации сетки, потому что я не думаю, что это может быть причиной), и сетка висит почти 10 секунд!
---
PS я нашел проект, который написан таким же образом, но даже связывание 50000 записей осуществляется без пользовательского интерфейса зависания там! Что я делаю не так?
UPDATE Я думаю, это из-за ScrollViewer, который содержит всю сетку в нем. Но почему?
... и на ваш вопрос? –
вопрос: как я могу ускорить привязку? – 0x49D1
или, может быть, вы можете просто дать мне направление. О том, как правильно привязывать данные к datagrid. Im новый для WPF и не ожидал таких проблем – 0x49D1