Мой сценарий таков: у меня есть Tabbed
страница в Xamarin Forms
:
public partial class MainPage : TabbedPage
{
public MainPage()
{
InitializeComponent();
var playPage = new NavigationPage(new PlayPage())
{
Title = "Play",
Icon = "play.png"
};
var settingsPage = new NavigationPage(new SettingsPage())
{
Title = "Settings",
Icon = "settings.png"
};
var favoritesPage = new NavigationPage(new FavoritesPage())
{
Title = "Favorites",
Icon = "fave.png"
};
var aboutPage = new NavigationPage(new AboutPage())
{
Title = "About",
Icon = "info.png"
};
Children.Add(playPage);
Children.Add(favoritesPage);
Children.Add(settingsPage);
Children.Add(aboutPage);
}
}
Я хочу добавить в свое приложение функцию паузы и воспроизведения. При запуске PlayPage
изначально будет иметь значок play.png
, и когда я снова нажму на PlayPage
, значок изменится на pause.png
. Страница меняет не только значок страницы. Кто-нибудь знает, как это можно сделать?
Изменить:
Итак, я создал собственный рендерер, в OnElementChanged
я использую ViewControllerSelected
:
var tabbarController = (UITabBarController)this.ViewController;
if (null != tabbarController)
{
tabbarController.ViewControllerSelected += OnTabBarReselected;
}
А мой OnTabBarReselected
у меня:
private void OnTabBarReselected(object sender, UITabBarSelectionEventArgs e)
{
switch (TabBar.SelectedItem.Title)
{
case "Play":
TabBar.SelectedItem.Title = "Pause";
TabBar.SelectedItem.Image = UIImage.FromFile("pause.png");
break;
}
}
Это только половина работы. Он изменяет Title
выбранной панели вкладок с Play
на Pause
после того, как я нажимаю на ту же вкладку, но не на Icon
. Значок остается "play.png", пока я не выйду с этой вкладки (выбрав другую вкладку). Кто-нибудь знает, почему?