Quantcast
Channel: Xamarin.Forms — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 91519

Getting IndexOutOfRangeException when I try to get the DependencyService for tabbed pages.

$
0
0

This is the code for the TabbedPage.xaml
`using RapidRate.Models;
using RapidRate.Services;
using RapidRate.ViewModels;
using System.Collections.Generic;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace RapidRate
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MyReviewsTabbedPage : TabbedPage
{
public MyReviewsTabbedPage()
{
InitializeComponent();

        BindingContext = new MyReviewsViewModel(
            DependencyService.Get<INavService>()
        );
    }

    MyReviewsViewModel _vm
    {
        get {
            return BindingContext as MyReviewsViewModel;
        }
    }

    protected override async void OnAppearing()
    {
        base.OnAppearing();
        if (_vm != null)
            await _vm.Init();
    }
}

}`

INavService.cs
`using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RapidRate.ViewModels;

namespace RapidRate.Services
{
public interface INavService
{
bool CanGoBack { get; }

    Task GoBack();

    Task NavigateTo<TVM>() where TVM : BaseViewModel;

    Task NavigateTo<TVM, TParameter>(TParameter parameter) where TVM : BaseViewModel;

    Task RemoveLastView();

    Task ClearBackStack();

    Task NavigateToUri(Uri uri);

    event PropertyChangedEventHandler CanGoBackChanged;
}

}
`

and here is the view model for the tabbed page:
`using RapidRate.Models;
using RapidRate.Services;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Threading.Tasks;

namespace RapidRate.ViewModels
{
class MyReviewsViewModel : BaseViewModel
{
public MyReviewsViewModel(INavService navService) : base(navService)
{
AvgScores = new ObservableCollection();
MyReviews = new ObservableCollection();
}

    private ObservableCollection<RapidRateReport> _avgScores;
    public ObservableCollection<RapidRateReport> AvgScores
    {
        get { return _avgScores; }
        set { _avgScores = value; OnPropertyChanged(); }
    }

    private ObservableCollection<PeopleRapidRate> _myReviews;
    public ObservableCollection<PeopleRapidRate> MyReviews
    {
        get { return _myReviews; }
        set { _myReviews = value; OnPropertyChanged(); }
    }

    public override async Task Init()
    {
        await LoadEntries();
    }

    async Task LoadEntries()
    {
        AvgScores.Clear();
        List<RapidRateReport> reviews = WebService.GetRapidRateAvgReport(App.CompanyID, App.PID);
        foreach(RapidRateReport review in reviews)
        {
            AvgScores.Add(review);
        }
    }
}

}`

Is there anything else you need?


Viewing all articles
Browse latest Browse all 91519

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>