Как мне реализовать INotifyPropertyChanged для автоматического обновление данных в DataGrid?

Делаю десктопное приложение использую Entity Framework на WPF .
Написал следующий класс.
public class PlavkaViewModel : INotifyPropertyChanged
    {
        private Model.MagnesiumEntities _dataContext;
        public ObservableCollection<Model.plavka> Plavkas { get; private set; }
 
        public PlavkaViewModel()
        {
            _dataContext = new Model.MagnesiumEntities();
            Plavkas = new ObservableCollection<Model.plavka>(_dataContext.plavkas);  
        }
 
        public void SaveChanges()
        {
            _dataContext.SaveChanges();
        }
 
        #region INotifyPropertyChanged
         // (Что мне тут делать?)
        /// <summary>
        /// Событие, которое мы должны вызывать каждый раз когда хотим сообщить об изменении данных. 
        /// </summary>
        public event PropertyChangedEventHandler PropertyChanged;
 
        /// <summary>
        /// Метод для вызова события об изменении свойства ViewModel.
        /// </summary>
        /// <param name="propertyName"></param>
        private void RaisePropertyChanged(string propertyName)
        {
            if (PropertyChanged == null)
            {
                return;
            }
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
 
        #endregion
    }


А затем привязал его к DataGrid. Всё хорошо отображается. Но как мне сделать чтобы при изменении данных в базе (например с другого клиента) это сразу отобразилось бы и в таблице ?
  • Вопрос задан
  • 4902 просмотра
Пригласить эксперта
Ответы на вопрос 2
вам нужно одно из двух:
1) как-то уведомлять остальных клиентов о том что в базе что-то поменялось. тут вам понадобится сервер приложения, через который будут идти все запросы, и который будет рассылать клиентам уведомления
2) раз в н секунд смотреть не поменялось ли что-то в базе
Ответ написан
Вы должны добавить вызов события PropertyChanged для каждого свойства, которое надо обновлять.
Например
public class People : INotifyPropertyChanged
{
      public event PropertyChangedEventHandler PropertyChanged;

      private string _firstName;

      public string FirstName
      {
            get { return _firstName; }
            set
            {
                _firstName = value;
                PropertyChanged(this, new PropertyChangedEventArgs("FirstName"));
            }
      }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы