/// <summary> /// Initializes a new instance of the MainViewModel class. /// </summary> public MainViewModel(IApplicationService applicationService, IFileService fileService) { // Services this.fileService = fileService; this.applicationService = applicationService; // Initial state this.scriptArgument = "<Argument>"; this.state = MainViewModelState.Idle; this.mainAssembly = Assembly.GetEntryAssembly(); this.AssemblyPlatform = Environment.Is64BitProcess ? DiagnosticAssembyPlatform.x64 : DiagnosticAssembyPlatform.x86; this.engine = new DiagnosticEngine(); this.engine.Log += UpdateLog; // Commands this.RunScriptCommand = new RelayCommand(RunScript, CanRunScript); this.ExitCommand = new RelayCommand(Exit); this.LoadExperimentCommand = new RelayCommand(LoadExperiment); this.SaveExperimentCommand = new RelayCommand(SaveExperiment, CanSaveExperiment); this.SaveExperimentAsCommand = new RelayCommand(SaveExperimentAs); this.GCDataClickCommand = new RelayCommand <ChartPoint>(GCDataClick); // Self-register messages Messenger.Default.Register <PropertyChangedMessage <string> >( this, (e) => { if (e.PropertyName == nameof(ScriptText)) { this.RunScriptCommand?.RaiseCanExecuteChanged(); } }); Messenger.Default.Register <PropertyChangedMessage <MainViewModelState> >( this, (e) => { this.RunScriptCommand?.RaiseCanExecuteChanged(); }); Messenger.Default.Register <PropertyChangedMessage <IExperimentFile> >( this, e => { this.SaveExperimentCommand?.RaiseCanExecuteChanged(); RaisePropertyChanged(nameof(Title)); }); // LiveCharts customization this.mapper = Mappers.Xy <DateViewModel>() .X(dayModel => dayModel.DateTime.Ticks) .Y(dayModel => dayModel.Value); this.GraphDataGC = new SeriesCollection(); this.GCSections = new SectionsCollection(); this.GCSectionsLabels = new VisualElementsCollection(); }
public SeriesCollection WithConfig <T>(IPointEvaluator <T> configuration) { Configuration = configuration; return(this); }