我的情况是,我有一个 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”。任何人都知道为什么?
您将需要实现自定义渲染器才能完成此操作。 James Montemagno 的博客上有一些实现,他在其中谈到了更改图标。
然而,这不一定与您点击图标并更改该特定图标的要求相关,因为所有这些代码仅在页面最初加载时运行。不过,这可能是一个不错的起点。检查那里是否有 TabbedPage 上的属性,当您点击当前选项卡并更改该点的图标时,该属性会发生变化。
您还有一个可以在 TabbedPage
中覆盖的 OnCurrentPageChanged
事件,但是当页面已经处于事件状态时不会调用该事件。
我是一名优秀的程序员,十分优秀!