public AssignedTicketsViewModel(IScreen screen, ISession session) { HostScreen = screen; GoBack = HostScreen.Router.NavigateBack; Tickets = new ReactiveList<TicketItemViewModel>(); Employees = new ReactiveList<Employee>(); _isFetchingTickets = session.IsWorking .ToProperty(this, x => x.IsFetchingTickets); this.WhenAnyValue(x => x.SelectedEmployee) .Where(x => x != null) .Subscribe(x => { Tickets.Clear(); session.FetchMergedResults( QueryHelper.QueryOnTicketsAndEvents, QueryHelper.Filter<TicketWithEvent>(z => (x.Id == int.MinValue || z.EmployeeId == x.Id) && z.TicketStatus == TicketStatus.Assigned)) .ObserveOn(RxApp.MainThreadScheduler) .Select(y => new TicketItemViewModel(y.Description, y.TicketStatus ?? TicketStatus.Open)) .Subscribe(y => Tickets.Add(y)); }); SelectedEmployee = new Employee { Name = "All", TicketEvents = null, Id = int.MinValue }; Employees.Add(SelectedEmployee); session.FetchResults<Employee>() .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(x => Employees.Add(x)); session.ThrownExceptions.Subscribe(x => { Console.WriteLine(x.Message); }); }