的TabbedPage暴露了CurrentPageChanged事件(或者你可以重写OnCurrentPageChanged)将触发只有当所选标签的变化,所以如果你想在用户改变标签页时滚动,你需要订阅。似乎并不需要这样做,但以防万一...
Xamarin.Forms没有内置事件,当第二次选择已经选择的选项卡时触发。不过,通过继承Xamarin的TabbedPage渲染器,您可以使用自定义渲染器来实现这一点。我写了它here,并有一个适用于iOS,Android和UWP here的Xamarin.Forms解决方案。
你没有提及平台,所以假设你想要iOS和Android,核心位在下面。
iOS的自定义渲染
public class MainTabPageRenderer : TabbedRenderer
{
private UIKit.UITabBarItem _prevItem;
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
if (SelectedIndex < TabBar.Items.Length)
_prevItem = TabBar.Items[SelectedIndex];
}
public override void ItemSelected(UIKit.UITabBar tabbar,
UIKit.UITabBarItem item)
{
if (_prevItem == item && Element is MainPage)
{
// the same tab was selected a second time, so do something
}
_prevItem = item;
}
}
Android的自定义渲染
public class MainTabPageRenderer : TabbedPageRenderer, TabLayout.IOnTabSelectedListener
{
void TabLayout.IOnTabSelectedListener.OnTabReselected(TabLayout.Tab tab)
{
if (Element is MainPage)
{
// the same tab was selected a second time, so do something
}
}
}
一旦你捕获的事件,使用ListView.ScrollTo方法来滚动到顶部。
谢谢,这有些帮助,我主要关心的是如何让顶栏执行该代码时,单击它。我不知道哪个事件或哪里实现你的代码行,(我对Xamarin Forms还是很新的)。试图搜索整个互联网,但没有运气与这种特殊情况。 –
如果您使用的是代码,您需要将该代码片段插入到您的事件处理程序中。如果你使用MVVM,我会建议使用命令来绑定它。您可以创建工具栏按钮,以便当用户单击“向上滚动”按钮时,该列表视图滚动位置将被触发。我希望它能帮助你 –