Xamarin.Forms/UWP: проблема с Iconize и MasterDetailPage
Я использую плагин Iconize для своего проекта, и есть проблема, которая возникает, если IconToolbarItem используется в IconNavigationPage, который сам по себе используется в Detail of MasterDetailPage.
Если мы запустим проект UWP из IconizeSample, IconToolbarItems будут хорошо отображены в TabbedPage:
var tabbedPage = new IconTabbedPage { Title = "Iconize" };
foreach (var module in Plugin.Iconize.Iconize.Modules)
{
tabbedPage.Children.Add(new Page1
{
BindingContext = new ModuleWrapper(module),
Icon = module.Keys.FirstOrDefault()
});
}
MainPage = new IconNavigationPage(tabbedPage);
Если мы заменим TabbedPage на MasterDetailPage, это также сработает, если Detail не является IconNavigationPage:
var mdPage = new MasterDetailPage();
mdPage.Master = new ContentPage
{
Title = "Iconize"
};
var module = Plugin.Iconize.Iconize.Modules.First();
mdPage.Detail = new Page1
{
BindingContext = new ModuleWrapper(module),
Icon = module.Keys.FirstOrDefault()
};
MainPage = new IconNavigationPage(mdPage);
Но если мы поместим Detail в IconNavigationPage, значки IconToolbarItem больше не будут видны:
var mdPage = new MasterDetailPage();
mdPage.Master = new ContentPage
{
Title = "Iconize"
};
var module = Plugin.Iconize.Iconize.Modules.First();
mdPage.Detail = new IconNavigationPage(new Page1
{
BindingContext = new ModuleWrapper(module),
Icon = module.Keys.FirstOrDefault()
});
MainPage = mdPage;
У вас есть объяснение? Есть ли способ исправить это в ожидании новой версии пакета?
1 ответ
Но если мы поместим Detail в IconNavigationPage, значки IconToolbarItem больше не будут видны:
Проблема в том, что вы не вставили mdPage
в IconNavigationPage
, Я изменил ваш код, и он работает.
var mdPage = new MasterDetailPage();
mdPage.Master = new ContentPage
{
Title = "Iconize"
};
var module = Plugin.Iconize.Iconize.Modules.First();
var page = new Page1
{
BindingContext = new ModuleWrapper(module),
Icon = module.Keys.FirstOrDefault()
};
mdPage.Detail = page;
MainPage = new IconNavigationPage(mdPage);