Пользователь может выполнить действие, и я добавляю данные в коллекцию, привязанную к DataGrid, и это работает нормально.WPF привязывает данные к datagrid только между действиями пользователя. Как принудительно обновить datagrid?
Но если в коллекции есть многократный процесс, в который добавлено несколько записей, я никогда не вижу, чтобы DataGrid обновлялся до завершения процесса. Что я делаю не так? Я действительно новичок в этом, поэтому я уверен, что проблема проста.
private ObservableCollection<StatusEntry> _collSe = new ObservableCollection<StatusEntry>();
public ObservableCollection<StatusEntry> CollSe
{
get { return _collSe; }
set
{
_collSe = value;
// NotifyPropertyChanged("CollSe");
}
}
CollSe.Add(new StatusEntry() { TimeStamp = DateTime.Now, Comment = "STARTED: Translating file to DataTable" });
DataTable dt = ExcelHelper.ReadAsDataTable(tbFileName.Text);
CollSe.Add(new StatusEntry() { TimeStamp = DateTime.Now, Comment = "COMPLETE: Translating file to DataTable" });
EDIT:
Яснее вот что я пытался .. Еще не обновляется интерфейс до конца, хотя
private void btnProcessFile_Click(object sender, RoutedEventArgs e)
{
//THis should happen as soon as the button is pressed
ThreadStart job = new ThreadStart(() =>
{
for (int i = 0; i < 20; i++)
{
// The new thread puts UI operations in the dispatching queue
Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
{
CollSe.Add(new StatusEntry() { TimeStamp = DateTime.Now, Comment = "Happy Tools STARTED" });
}));
}
});
Thread thread = new Thread(job);
thread.Start();
//The another minute of processing here.....
Ну вот как это. Пока сбор не будет обновлен, пользовательский интерфейс не будет его отражать. – Versatile
Это на той же теме? –
Я думаю, что это имеет какое-то отношение к Thread vs. UI thread? Это не просто datagrid .. Это любой графический интерфейс. Ни один из них не обновляется до тех пор, пока управление не будет возвращено пользователю. – punkouter