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);
Другие вопросы по тегам