foreach(DataGridViewRow dr in dataGridView.SelectedRows)
{
MyBusiness business = (MyBusiness)dr.DataBoundItem;
business.Rating = 5;
}
К сожалению, когда выбрано несколько строк, немедленно обновляется только одна DataGridViewRow
, а именно та, которая была выбрана последней. Базовые объекты изменяются, и запускается событие NotifyPropertyChange. Более того, когда я меняю выбор после обновления, я вижу, что все строки обновляются точно так, как я хотел бы, чтобы они были немедленно.
Во-вторых, очень странно: когда я устанавливаю точку останова в Setter свойства Rating
, где срабатывает NotifyPropertyChange, и жду там несколько секунд, прежде чем продолжить выполнение кода, все работает хорошо (все строки сразу обновляются). Если я не жду, а очень быстро нажимаю F5 каждый раз, когда точка останова пройдена, я получаю описанный выше эффект.
Мой бизнес-объект выглядит так (конечно, значительно укороченный):
public class MyBusiness : INotifyPropertyChanged
{
private int _rating;
public int Rating
{
get { return _rating; }
set
{
if(_rating != value)
{
_rating = value;
NotifyPropertyChanged("Rating");
}
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
Кто-нибудь уже заметил это поведение или даже знает решение (или обходной путь)?