protected IssueModifyViewModel(string username, string repository) { var alertDialogService = Locator.Current.GetService <IAlertDialogService>(); Username = username; Repository = repository; Kind = "bug"; Priority = "major"; Milestones = new IssueMilestonesViewModel(username, repository); Versions = new IssueVersionsViewModel(username, repository); Components = new IssueComponentsViewModel(username, repository); Assignee = new IssueAssigneeViewModel(username, repository); SaveCommand = ReactiveCommand.CreateFromTask( t => Save(), this.WhenAnyValue(x => x.IssueTitle).Select(y => !string.IsNullOrEmpty(y))); SaveCommand.BindCommand(DismissCommand); DiscardCommand = ReactiveCommand.CreateFromTask(async t => { if (Content?.Length > 0 || IssueTitle?.Length > 0) { var result = await alertDialogService.PromptYesNo( "Discard Changes", "Are you sure you want to discard your changes?"); if (!result) { return; } } DismissCommand.ExecuteNow(); }); }