private void InitDoc(ReturnDoc doc) { Doc = doc; var docStatus = Doc.ObservableForProperty(x => x.Status, skipInitial: false); var editOrDelete = docStatus .CombineLatest(CurrentLine, (x, y) => y != null && x.Value == DocStatus.NotPosted); editOrDelete.Subscribe(CanEditLine); editOrDelete.Subscribe(CanDelete); docStatus.Subscribe(x => CanAdd.Value = x.Value == DocStatus.NotPosted); docStatus.Select(x => x.Value == DocStatus.NotPosted).Subscribe(CanPost); docStatus.Select(x => x.Value == DocStatus.Posted).Subscribe(CanUnPost); }