private void OnLevelDataUpdate(LevelDataEventArgs e) { if (LevelDataUpdate != null) { LevelDataUpdate(this, e); } }
public void UpdateLevelData(object sender, LevelDataEventArgs e) { // Собственно говоря, этот код лучше не трогать, потому что он пока что идеально работает. // Здесь (достаточно криво) реализуется часть паттерна "наблюдатель", который, в общем-то, здесь почти и // не нужен (ObservableCollection все делает за нас), но более простого способа обновить байндинги я // так и не нашел. if (e.NeedsReload) { levelData = e.Data; if (levelData != null) { levelData.LevelResize += HandleLevelResize; } CurrentSelectionObject = null; NotifyPropertyChanged("IsFileOpened"); NotifyPropertyChanged("SpawnPosition"); NotifyPropertyChanged("SpawnPositionVisibility"); NotifyPropertyChanged("SpawnBig"); } if (e.NeedsResize) { NotifyPropertyChanged("LevelWidth"); NotifyPropertyChanged("LevelHeight"); NotifyPropertyChanged("GridWidth"); NotifyPropertyChanged("GridHeight"); } // Возможность обновлять слои по-отдельности, вероятно, пригодится в дальнейшем. if (e.ObjectsToUpdate != null) { foreach (string objectToUpdate in e.ObjectsToUpdate) { NotifyPropertyChanged(objectToUpdate); } } NotifyPropertyChanged("LevelObjects"); NotifyPropertyChanged("CurrentSelectionObject"); }