/// <summary> /// コンストラクタ /// DIでModel層を注入する /// </summary> /// <param name="workitemManager"></param> public WorklistViewModel(IRegionManager regionManager, WorkitemManager workitemManager, TitleMessenger titleMessenger) { this._regionManager = regionManager; this._workitemManager = workitemManager; this._titleMessenger = titleMessenger; this.Studies = this._workitemManager.Workitems .ToReadOnlyReactiveCollection(x => new WorkitemViewModel(x)); this.StudiesView = CollectionViewSource.GetDefaultView(this.Studies); this.StudiesView.Filter = this.WorkitemFilter; this.SelectedStudy = new ReactiveProperty <WorkitemViewModel>() .SetValidateAttribute(() => this.SelectedStudy); this.ClearCommand = new ReactiveCommand() .WithSubscribe(this._workitemManager.ClearWorkitems); this.ReloadCommand = new ReactiveCommand() .WithSubscribe(() => this.ReloadWorkitems()); this.NavigateDetailCommand = this.SelectedStudy .ObserveHasErrors .Inverse() .ToReactiveCommand() .WithSubscribe(() => this.NavigateToDetailWithParams()); this.ChangeTitleCommand = new ReactiveCommand() .WithSubscribe(() => this._titleMessenger.ChangeTitle("Worklist")); this.TextFilter.Subscribe(_ => this.Refresh()); }
public MainWindowViewModel(TitleMessenger titleMessenger) { // Model this._titleMessenger = titleMessenger; // Model → VMの接続 this.Title = this._titleMessenger .ObserveProperty(m => m.Title) .ToReactiveProperty(); }