的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,我會建議使用命令來綁定它。您可以創建工具欄按鈕,以便當用戶單擊「向上滾動」按鈕時,該列表視圖滾動位置將被觸發。我希望它能幫助你 –