/// <summary> /// construct the presentation state with an event aggregator, to send/receive update events /// </summary> /// <param name="eventAggregator"></param> public PresentationStateViewModel(IEventAggregator eventAggregator, IFrameUpdateManager fum) { _eventAggregator = eventAggregator; _fum = fum; // store the UI thread SynchronizationContext _syncContext = SynchronizationContext.Current; System.Diagnostics.Trace.Assert(_syncContext != null); }
/// <summary> /// constructs a new LayeredViewViewModel, and wires up the necessary events /// </summary> /// <param name="container">the unity container for resolving things</param> /// <param name="eventAggregator">the event aggregator for sending/receiving</param> /// <param name="repository">the model repository</param> public LayeredViewViewModel(IUnityContainer container, IEventAggregator eventAggregator, IModelRepository repository) { _container = container; _eventAggregator = eventAggregator; _repository = repository; // store the UI thread SynchronizationContext _uiUpdateContext = SynchronizationContext.Current; System.Diagnostics.Trace.Assert(_uiUpdateContext != null); // create a new PresentationState view model and add to the active layer PresentationState = _container.Resolve <PresentationStateViewModel>(); ActiveLayer.Add(PresentationState); // subscribe to events _eventAggregator.GetEvent <NavigationPointUpdateEvent>() .Subscribe(OnNavigationPointUpdated, ThreadOption.UIThread); _eventAggregator.GetEvent <ImageDataLoadedEvent>() .Subscribe(OnImageDataLoadedEvent, ThreadOption.UIThread); _eventAggregator.GetEvent <VolumeUpdatedEvent>() .Subscribe(OnVolumeUpdatedEvent, ThreadOption.UIThread); _eventAggregator.GetEvent <SetIsocurveLevelEvent>() .Subscribe(OnSetIsocurveLevel, ThreadOption.UIThread); // set up the performance counters FrameRatePerformance = new PerformanceCounter("FrameRate", _uiUpdateContext); BackgroundLayerPerformance = new PerformanceCounter("BackLayer", _uiUpdateContext); PassiveLayerPerformance = new PerformanceCounter("PassLayer", _uiUpdateContext); _renderUpdateManager = _container.Resolve <IFrameUpdateManager>(); if (_renderUpdateManager.UiUpdatePerformance == null) { _renderUpdateManager.UiUpdatePerformance = new PerformanceCounter("UIUpdate", _uiUpdateContext); } UiUpdatePerformance = _renderUpdateManager.UiUpdatePerformance; }