コード例 #1
0
        /// <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());
        }
コード例 #2
0
        public MainWindowViewModel(TitleMessenger titleMessenger)
        {
            // Model
            this._titleMessenger = titleMessenger;

            // Model → VMの接続
            this.Title = this._titleMessenger
                         .ObserveProperty(m => m.Title)
                         .ToReactiveProperty();
        }