public BlocksViewModel(NewBlockProcessingService newBlockProcessingService) { _newBlockProcessingService = newBlockProcessingService; MessageBus.Current.Listen <UrlChanged>().Subscribe(x => { lock (_lockingObject) { Loading = true; Blocks.Clear(); } } ); _newBlockProcessingService.Blocks.Connect().Subscribe(blockChanges => { lock (_lockingObject) { Loading = true; Blocks.Edit(_ => { Blocks.Clear(); foreach (var block in _newBlockProcessingService.Blocks.Items) { Blocks.AddOrUpdate(new BlockViewModel(block)); } }); Loading = false; } } ); }