Я использую шаблон 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)