У меня есть странная проблема в моем приложении WPF. Я использую шаблон MVVM и это часть моей MainWindowViewModel:приложение зависает, когда вызовы событий INotifyPropertyChanged
// GridView control in MainWindow.xaml binded to this property
public DataTable DT
{
get { return _dt; }
}
// INotifyPropertyChanged Member for refreshing bindings
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
// my function
void OnCreateTable()
{
_dt = // creating new table here
OnPropertyChanged("DT"); // refresh binding
}
Когда я называю OnCreateTable() программа почти ВСЕГДА вешает с 100% использованием процессора (иногда, без использования центрального процессора, но других ошибок как неверные данные в элементе управления GridView).
При отладке я обнаружил некоторые факты:
1) OnCreateTable() и привязки данных работают нормально, если делают паузы OnPropertyChanged:
void OnCreateTable()
{
_dt = // creating new table here
Thread.Sleep(1000); //!!!
OnPropertyChanged("DT"); // refresh binding
}
2) OnCreateTable() и привязки данных работает нормально, если след он с «переходом» (потому что это делает паузу перед OnPropertyChanged)
Не могу понять, почему мне нужно сделать паузу перед OnPropertyChanged.
У вас есть какие-либо темы? –
Нет, у меня нет. Его простое приложение пока. –
Сколько строк в вашем файле? и что произойдет, если вы установите directsource напрямую без привязки (только для тестирования) – blindmeis