【问题标题】:Xamarin Forms-TableView - Go to First ElementXamarin Forms-TableView - 转到第一个元素
【发布时间】:2016-12-06 17:27:04
【问题描述】:

我的页面中有一个包含不同部分的 TableView。情况是当我向下滚动时,我希望最后有一个类似于顶部自动滚动的按钮。我在考虑使用 Focus() 或类似的东西,但我没有找到正确的方法。有可能吗?

提前致谢。 奥斯卡

【问题讨论】:

  • 你为什么要那个?您确定要在您的情况下使用 TableView 吗?也许带有分组和页眉和页脚的 ListView 可以为您做到这一点?我问是因为在 ListView 你可以有一个 ScrollTo 方法
  • 我有一个表单,用户需要填写接近 10 个值,有时用户需要返回顶部,在 Listview 中是否可以这样?
  • 检查我的答案
  • 我会检查的,谢谢!

标签: xamarin xamarin.forms tableview


【解决方案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

其中更难的部分是弄清楚如何将 Xamarin.Forms.Button.Clicked 事件处理程序连接到特定于平台的自定义渲染器。您可以使用 OnPropertyChanged 覆盖并在 Xamarin.Forms 元素上使用布尔属性,该属性可以设置为触发上述方法。您还可以在 Xamarin.Forms.ListView 上创建一个自定义事件处理程序,并让它调用平台特定的方法。我建议查看 Xamarin.Forms 如何在 Android here 上执行此操作。你可以做一些非常相似的事情。

希望对你有所帮助!

【讨论】:

  • 感谢您的回答!我从没想过这个简单的事情会在 Xamarin 中变得如此复杂。我会尝试这个并再次给出答案。
【解决方案2】:

阅读 cmets 后,我会说这取决于具体情况:

  1. 如果字段是静态的并且不会在运行时更改(添加/删除),那么我会将字段(标签和条目)放在具有 ScrollToAsync 方法的ScrollView 中。
  2. 如果可以在运行时更改字段并且您不知道会有多少行,那么您可以使用 ListView。但据我了解,您并不真的需要那个。

【讨论】:

  • 感谢您的回答。我之前测试过将所有 TableView 放在一个 ScrollView 中,但它工作起来很奇怪,可能是因为 tableview 在另一个 ScrollView 中,我错了吗?
  • 完全尝试将 tableView 替换为 stacklayout 或网格
  • 谢谢,我试试看!
【解决方案3】:

我尝试了所有的解决方案,但我遇到了不同的问题:

  • 使用列表视图:目前每个单元格对我来说都是不同的,所以我没有看到创建具有不同数据源的列表视图的方法。
  • Scrollview:我无法使用此解决方案,因为现在我需要当前正在使用的所有单元格(自定义 ViewCell)。

我希望找到另一个解决方案。谢谢!

编辑:我发现一些有趣的东西非常适合我的案例Update Xamarin ContentPage content on event isn't working

【讨论】:

猜你喜欢
  • 2023-01-31
  • 2020-05-20
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2017-06-19
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多