public WorkTaskViewModel(WorkTask task, WorkProcess[] processes, Client[] clients, Product[] products) { DomainModel = task; _Processes = processes; _Clients = clients; _Products = products; Title = DomainModel.ToReactivePropertyWithIgnoreInitialValidationError(x => x.Title) .SetValidateNotifyError(x => string.IsNullOrWhiteSpace(x) ? "タイトルは入力必須です" : null) .AddTo(CompositeDisposable); TaskCategory = DomainModel.ToReactivePropertyAsSynchronized(x => x.TaskCategory) .AddTo(CompositeDisposable); Product = DomainModel.ToReactivePropertyAsSynchronized( x => x.ProductId, m => _Products.FirstOrDefault(p => p.Id == m), vm => vm?.Id ?? Identity <Product> .Empty) .AddTo(CompositeDisposable); WorkProcess = DomainModel.ToReactivePropertyAsSynchronized( x => x.ProcessId, m => _Processes.FirstOrDefault(p => p.Id == m), vm => vm?.Id ?? Identity <WorkProcess> .Empty, ReactivePropertyMode.IgnoreInitialValidationError) .SetValidateNotifyError(x => (x == null || x.Id == Identity <WorkProcess> .Empty) ? "工程は選択必須です" : null) .AddTo(CompositeDisposable); Client = DomainModel.ToReactivePropertyAsSynchronized( x => x.ClientId, m => _Clients.FirstOrDefault(p => p.Id == m), vm => vm?.Id ?? Identity <Client> .Empty) .AddTo(CompositeDisposable); if (task.Id.IsTemporary) { DomainModel.TaskCategory = Domain.Domain.Tasks.Definitions.TaskCategory.Develop; } //Remarks = DomainModel.ToReactivePropertyWithIgnoreInitialValidationError(x => x.Remarks) // .SetValidateNotifyError(x => string.IsNullOrWhiteSpace(x) ? "備考は入力必須です" : null) // .AddTo(CompositeDisposable); }