2016-12-02 92 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

相关问题