MasterDetailPage Xamarin. Формы не могут передать параметр при навигации из меню - PullRequest
1 голос
/ 19 мая 2019

Я использую шаблон MasterDetailPage по умолчанию для решения нескольких проектов Xamarin.

Код для MainPage выглядит так:

public partial class MainPage : MasterDetailPage
{

    public CompanyId _loggedInCompany;
    public string company { get; set; }

    Dictionary<int, NavigationPage> MenuPages = new Dictionary<int, NavigationPage>();
    public MainPage(CompanyId companyId)
    {
        InitializeComponent();
        _loggedInCompany = companyId;
        company = _loggedInCompany.CompanyName;

        MasterBehavior = MasterBehavior.Popover;

        MenuPages.Add((int)MenuItemType.WelcomePage, (NavigationPage)Detail);
    }

    public async Task NavigateFromMenu(int id)
    {
        if (!MenuPages.ContainsKey(id))
        {
            switch (id)
            {
                case (int)MenuItemType.WelcomePage:
                    MenuPages.Add(id, new NavigationPage(new WelcomePage(company)));
                    break;
                case (int)MenuItemType.UsersPage:
                    MenuPages.Add(id, new NavigationPage(new UsersPage()));
                    break;
                case (int)MenuItemType.WebHomePage:
                    MenuPages.Add(id, new NavigationPage(new ClientHomePage()));
                    break;
                case (int)MenuItemType.VideosPage:
                    MenuPages.Add(id, new NavigationPage(new VideosPage()));
                    break;
                case (int)MenuItemType.SpecialPage1:
                    MenuPages.Add(id, new NavigationPage(new SpecialPage1()));
                    break;
                case (int)MenuItemType.SettingsPage:
                    MenuPages.Add(id, new NavigationPage(new SettingsPage()));
                    break;
            }
        }

        var newPage = MenuPages[id];

        if (newPage != null && Detail != newPage)
        {
            Detail = newPage;

            if (Device.RuntimePlatform == Device.Android)
                await Task.Delay(100);

            IsPresented = false;
        }
    }
}

Как вы можете видеть в NavigatedFromMenu (int id),при переходе на WelcomePage я пытаюсь передать строку компании, но при сборке я получаю сообщение об ошибке:

Указанный ключ отсутствует в словаре

Что я делаюздесь не так?

Без передачи параметров код работает.Кроме того, мой WelcomePage принимает строку как WelcomePage(string company)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...