Со ссылкой на https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/shell/navigation?view=net-maui-8.0 Я вижу, что IconOverride принимает параметр ImageSource, следовательно, Источник изображения шрифта.
Однако как можно установить этот FontImageSource через XAML?
<ContentPage ...>
<Shell.BackButtonBehavior>
<BackButtonBehavior Command = "{Binding BackCommand}"
IconOverride = "back.png" />
</Shell.BackButtonBehavior>
...
</ContentPage>
Да, точно...
Вы можете попытаться определить FontImageSource
в ResourceDictionary
, а затем передать его как IconOverride = "{StaticResource sourceKey}"
.
<ContentPage.Resources>
<ResourceDictionary>
<FontImageSource x:Key = "sourceKey" FontFamily = "yourfontfamily" Glyph = "yourglyph"></FontImageSource>
</ResourceDictionary>
</ContentPage.Resources>
<Shell.BackButtonBehavior>
<BackButtonBehavior IconOverride = "{StaticResource sourceKey}">
</BackButtonBehavior>
</Shell.BackButtonBehavior>
Спасибо. В принципе это работает, однако теперь оно отображается постоянно и в ситуациях, когда значение по умолчанию скрыто.
@KasperSommer Вы имеете в виду, если вы установите IsVisible = "False"
, и он все еще отображается?
Не совсем. Если в стопке нет предыдущих страниц, кнопка «Назад» по умолчанию не отображается. В приведенном выше решении кнопка «Назад» отображается, даже если в стопке нет предыдущих страниц.
@KasperSommer Я не могу воспроизвести проблему the back button is shown even when the stack has no previous pages.
, как вы сказали, вы имеете в виду, что когда вы переходите с корневой страницы на вторую страницу, а затем возвращаетесь назад, кнопка «Назад» будет отображаться на корневой странице. Лучше создать Минимальный, воспроизводимый пример и добавить его в свой пост, я рассмотрю. :)
простой проект с оболочкой с вкладками и двумя страницами. Без вашего решения при переходе на вторую вкладку не будет кнопки «Назад». В вашем решении на второй вкладке есть кнопка «Назад».
На второй странице кнопка со стрелкой назад по умолчанию должна быть переопределена IconOverride = "{StaticResource sourceKey}"
см. эту картинку, как вы установили на второй странице, и в этом случае нет другой кнопки «Назад», не могли бы поделиться снимком экрана с эффектом, который вы хочешь добиться?
Конечно. Две страницы, без переопределения значков. Только клик после старта переключает на вторую вкладку. Нет значка назад. ссылка . Добавить переопределение значка теперь назад значок присутствует только при выборе второй вкладки. ссылка
Я понимаю, это связано со структурой вашей оболочки, вам нужно определить свой AppShell.xaml как <Shell xmlns = "http://schemas.microsoft.com/dotnet/2021/maui" x:Class = "Xaminals.AppShell"> <ShellContent Title = "Cats" Icon = "cat.png" ContentTemplate = "{DataTemplate views:CatsPage}" /> <ShellContent Title = "Dogs" Icon = "dog.png" ContentTemplate = "{DataTemplate views:DogsPage}" /> </Shell>
без нижних вкладок.
Спасибо, а почему без нижних вкладок? Мне нужны вкладки. И ваше решение делает то же самое. Значок гамбургер-меню просто заменяется выбранным мной символом.
@KasperSommer Я думаю, это потому, что кнопка «Назад» не будет иметь смысла, если вы также сможете перемещаться по нижним вкладкам. Как вы сказали, это отображается постоянно.
Хм, спасибо большое. Я просто не понимаю, почему логика другая только потому, что добавлен IconOverride. Он отлично работает со значком по умолчанию...
@KasperSommer Не беспокойтесь, спасибо за ответ.
Вы имеете в виду, что хотите использовать тип
FontImageSource
в качестве источника IconOverride?