2016-12-02 89 views
4

我在我的頁面中有一個帶有不同部分的TableView。這種情況是當我向下滾動時,我希望在最後有一個類似於在頂部自動滾動的按鈕。我正在考慮使用Focus()或類似的東西,但我沒有找到正確的方法來做到這一點。可以做到嗎?Xamarin Forms-TableView - 轉到第一個元素

在此先感謝。 Oscar

+0

完美的作品?你確定你想在你的情況下使用TableView嗎?也許一個ListView與分組和頁眉和頁腳可以爲你做這個?我問,因爲在ListView中,你可以有一個ScrollTo方法 – BraveHeart

+0

我有一個窗體,用戶需要填寫近10個值,有時用戶需要回到頂部,這可能在Listview中嗎? – omartinma

+0

查看我的回答 – BraveHeart

回答

1

具有DataTemplateSelector實現的Xamarin.Forms.ListView將是最簡單的方法,使其工作如BraveHeart在他的評論中提到的那樣。但是,您可以通過使用自定義渲染器在本機控件上執行此操作來完成此操作。

在iOS:
Xamarin.Forms.TableView從UITableView中暴露所述ScrollToRow方法繼承。在你的情況下,當調用它時,你會想在自定義渲染器中調用下面的方法。

ScrollToRow(NSIndex.FromIndex(0), UITableViewScrollPosition.Top, true); 

Xamarin.iOS documentation on ScrollToRow method

在Android上:
同樣的想法在這裏,你會想調用的自定義呈現下面的方法:

SmoothScrollToPosition(0,0); 

Xamarin.Android documentation on SmoothScrollToPosition

較硬其中一部分是弄清楚如何擁有e Xamarin.Forms.Button.Clicked事件處理程序將連接到平臺特定自定義渲染器。您可以使用OnPropertyChanged覆蓋,並在您的Xamarin.Forms元素上使用布爾屬性來設置觸發上述方法。你也可以在你的Xamarin.Forms.ListView上創建一個自定義事件處理程序,並調用特定於平臺的方法。我建議您查看Xamarin.Forms如何在Android here上執行此操作。你可以做一些非常相似的事情。

我希望這個幫助!

+0

感謝您的回答!我從來沒有想過,這件簡單的事情會在Xamarin中變得如此複雜。我會嘗試與此並再給出答案。 – omartinma

1

閱讀的意見後,我會說這取決於案件:

  1. 如果精密組件是靜態的,不會改變(添加/刪除)在運行時間,然後我會把使字段(標籤和條目)在一個ScrollView其中有一個ScrollToAsync方法。
  2. 如果可以在運行時更改字段,並且您不知道有多少行,那麼您將使用ListView。但根據我的理解,你並不需要那個。
+0

感謝您的回答。我已經測試過將所有的TableView放在ScrollView中,但它工作很奇怪,也許是因爲tableview在另一個ScrollView中,我錯了嗎? – omartinma

+0

準確地嘗試用stacklayout或網格替換tableView – BraveHeart

+0

謝謝,我會嘗試! – omartinma

0

我嘗試所有的解決方案,我有一個問題,不同的問題,所有:

  • 使用列表視圖:目前我每個細胞是不同的,所以我沒有看到創建一個列表視圖的方式與不同的數據源。
  • ScrollView:我無法使用此解決方案,因爲現在我需要當前使用的所有單元格(自定義ViewCell)。

我希望找到另一種解決方案。謝謝!

編輯:我發現了一些有趣的是,爲什麼你要的是我的情況Update Xamarin ContentPage content on event isn't working

+0

只需使用帶有窗體的DataTemplateSelector即可擁有不同的單元格。文檔:https://developer.xamarin.com/guides/xamarin-forms/templates/data-templates/selector/ – BrewMate

相關問題