示例#1
0
        protected BaseIssuesViewModel()
        {
            Issues = IssuesBacking.CreateDerivedCollection(
                x => CreateItemViewModel(x),
                filter: x => x.Title.ContainsKeyword(SearchKeyword),
                signalReset: this.WhenAnyValue(x => x.SearchKeyword));

            Issues.Changed.Subscribe(_ =>
            {
                GroupedIssues = Issues.GroupBy(x => x.RepositoryFullName)
                                .Select(x => new IssueGroupViewModel(x.Key, x)).ToList();
            });

            LoadCommand = ReactiveCommand.CreateAsyncTask(t =>
            {
                return(IssuesBacking.SimpleCollectionLoad(CreateRequest(), t as bool?,
                                                          x => LoadMoreCommand = x == null ? null : ReactiveCommand.CreateAsyncTask(_ => x())));
            });
        }
示例#2
0
        protected BaseIssuesViewModel()
        {
            var gotoIssueCommand = ReactiveCommand.Create();

            gotoIssueCommand.OfType <IssueItemViewModel>().Where(x => x.IsPullRequest).Subscribe(x =>
            {
                var vm             = this.CreateViewModel <PullRequestViewModel>();
                vm.RepositoryOwner = x.RepositoryOwner;
                vm.RepositoryName  = x.RepositoryName;
                vm.Id = x.Number;
                NavigateTo(vm);
            });
            gotoIssueCommand.OfType <IssueItemViewModel>().Where(x => !x.IsPullRequest).Subscribe(x =>
            {
                var vm             = this.CreateViewModel <IssueViewModel>();
                vm.RepositoryOwner = x.RepositoryOwner;
                vm.RepositoryName  = x.RepositoryName;
                vm.Id = x.Number;
                NavigateTo(vm);
            });

            gotoIssueCommand.CanExecuteObservable.Subscribe(x =>
            {
                System.Diagnostics.Debug.WriteLine("OH SHIT {0}", x);
            });

            Issues = IssuesBacking.CreateDerivedCollection(
                x => new IssueItemViewModel(x, gotoIssueCommand),
                filter: x => x.Title.ContainsKeyword(SearchKeyword),
                signalReset: this.WhenAnyValue(x => x.SearchKeyword));

            Issues.Changed.Subscribe(_ =>
            {
                GroupedIssues = Issues.GroupBy(x => x.RepositoryFullName)
                                .Select(x => new IssueGroupViewModel(x.Key, x)).ToList();
            });

            LoadCommand = ReactiveCommand.CreateAsyncTask(t =>
            {
                return(IssuesBacking.SimpleCollectionLoad(CreateRequest(), t as bool?,
                                                          x => LoadMoreCommand = x == null ? null : ReactiveCommand.CreateAsyncTask(_ => x())));
            });
        }