#c# #xamarin #xamarin.forms #navigation #xamarin.shell
Вопрос:
Я создаю страницу с 2 вкладками, и на каждой из них есть строка поиска поверх них, значение строки поиска на первой вкладке остается при переходе на другие вкладки и обратно на первую вкладку. Как удалить состояние или ссылку при переходе на другую вкладку? поэтому при переходе обратно на первую вкладку открывается новая страница(в строке поиска нет значения, и запускается конструктор) вместо старой(конструктор не запускается).
Я использую оболочку xamarin.
lt;Tab Title="Coffee"gt; lt;Tab.Icongt; lt;FontImageSource FontFamily="FAS" Color="{AppThemeBinding Dark=White, Light={StaticResource SystemGray5Dark}}" Glyph="{StaticResource IconCoffee}"/gt; lt;/Tab.Icongt; lt;ShellContent Title="Light" ContentTemplate="{DataTemplate local:CoffeeEquipmentPage}" Route="CoffeeEquipmentPage" /gt; lt;ShellContent Title="Medium" ContentTemplate="{DataTemplate local:CoffeeEquipmentPage}" Route="CoffeeEquipmentPage2" /gt; lt;ShellContent Title="Dark" ContentTemplate="{DataTemplate local:CoffeeEquipmentPage}" Route="CoffeeEquipmentPage3" /gt; lt;/Tabgt; lt;Tab Title="Espresso"gt; lt;Tab.Icongt; lt;FontImageSource FontFamily="FAS" Color="{AppThemeBinding Dark=White, Light={StaticResource SystemGray5Dark}}" Glyph="{x:Static fontAwesome:FontAwesomeIcons.MugHot}"/gt; lt;/Tab.Icongt; lt;ShellContent Title="tab 2" ContentTemplate="{DataTemplate local:CoffeeEquipmentPage}" Route="CoffeeEquipmentPage3" /gt; lt;/Tabgt;
Я прикрепил gif, чтобы показать такое поведение. Ссылка
Комментарии:
1. используйте
CurrentPageChanged
событие для запуска действия, когда пользователь меняет вкладки2. я могу использовать это событие для очистки значения панели поиска при переходе на другую страницу, но как это сделать при обратном переходе ? мне нужно заново создать список, так как список будет изменен в зависимости от значения строки поиска
3. событие срабатывает каждый раз при изменении страницы, и ему все равно, собираетесь ли вы туда или обратно
4. Как мне разместить команду EventToCommand для CurrentPageChanged на своей странице? Я попытался разместить
lt;ContentPage.Behaviorsgt; lt;xct:EventToCommandBehavior EventName="CurrentPageChanged" Command="{Binding CurrentPageChangedCommand}"/gt; lt;/ContentPage.Behaviorsgt;
на своей странице, но там появилась ошибка «Система. Отражение. Сообщение об исключении TargetInvocationException=Исключение было вызвано целью вызова.»5. Это событие срабатывает на странице вкладок, а не на странице содержимого