首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Xamarin Forms:为什么ListView不能在选项卡更改时保留滚动位置

Xamarin Forms是一种跨平台的移动应用开发框架,它允许开发人员使用C#语言和XAML来构建iOS、Android和Windows Phone应用程序。在Xamarin Forms中,ListView是一种用于显示可滚动列表的控件。

关于为什么ListView不能在选项卡更改时保留滚动位置,这是因为在选项卡更改时,页面会重新加载,ListView也会重新绑定数据源。这导致ListView的滚动位置会被重置为默认位置,而不是保留之前的滚动位置。

为了解决这个问题,可以使用以下方法之一:

  1. 保存和恢复滚动位置:在选项卡更改之前,可以通过记录当前的滚动位置(例如,通过ListView的ScrollY属性)来保存滚动位置。然后,在选项卡更改后,可以使用之前保存的滚动位置来恢复滚动位置。
  2. 使用BindableLayout:Xamarin Forms提供了BindableLayout类,它可以用于在多个选项卡之间共享数据源。通过将ListView的ItemsSource属性绑定到BindableLayout的ItemsSource属性,可以实现在选项卡更改时保留滚动位置。
  3. 使用第三方插件:有一些第三方插件可以帮助解决ListView在选项卡更改时保留滚动位置的问题。例如,Xamarin.Forms.Extended包含一个ExtendedListView控件,它具有保留滚动位置的功能。

总结起来,ListView不能在选项卡更改时保留滚动位置是因为页面重新加载导致ListView的滚动位置重置。为了解决这个问题,可以使用保存和恢复滚动位置、使用BindableLayout或使用第三方插件等方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

笔记 | Xamarin

Docs 关于xamarin.forms Android创建文件与写文件 (ftp) - 懒猫口米 - 博客园 外部读写 应用可以在外部存储上保留两种不同类型的文件: 专用 文件 – 专用文件是特定于应用程序的文件...滚动 - Xamarin | Microsoft Docs 滚动视图 ScrollView 在Xamarin.Forms中,滚动视图ScrollView用来实现长内容的滚动显示。...Android 打造属于自己的博客园APP(3) - IT胡小帅 - 博客园 Xamarin.Forms菜鸟笔记--3.ListView上拉加载更多_半块菠萝的博客-CSDN博客 自定义 ListView...- Xamarin | Microsoft Docs Xamarin.Forms - ListView With Pull To Refresh 在 Xamarin.Forms 中的 ListView...末尾加载更多项目 - James Montemagno c# - Xamarin.Forms ListView Load More - Stack Overflow InfinitescrollInCollectionView

24K20
  • 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    WPF / UWP 的 XAML C# Edit & Continue 称为 XAML Hot Reload,此新名称旨在更好地与该功能的实际工作方式保持一致(因为进行XAML编辑后无需暂停)并与 Xamarin.Forms...请注意,工具栏移动到的位置不会在会话之间存储,并且在您的应用重新启动时会返回到默认位置。 ?...尽管此功能最终将对所有 XAML 开发人员(WPF,UWP和Xamarin.Forms)都起作用,但新面板将使为那些构建WPF应用程序的客户容易发现绑定失败。 ?...#regions 智能感知(v16.4)的改进: 从 Visual Studio 2015 开始,WPF 和 UWP XAML 开发人员可以使用 #region 支持,Xamarin.Forms 最近也可以使用...单击后,XAML 设计器将最小化其附加的 XAML 选项卡,并仅针对 XAML 编辑器视图弹出一个新窗口。您可以将此新窗口移动到 Visual Studio 中的任何显示或选项卡组。

    7.3K30

    Visual Studio 2017 15.8 版发行说明

    Vasily Kirichenko 修复了滚动时一些文件的语义着色可能消失这一 bug。...创建新的 Xamarin.Forms 项目时,默认代码共享选项现在为 .NET Standard。 共享项目选项仍然可用。 添加了 Android 增量生成的改进。...在此版本中,现保留每个框架文件夹中的文件,这样你可以在不同的目标框架之间进行切换,并且仍可使用增量生成。 通过清理项目,你可以回收保留的文件所占用的磁盘空间。...Xamarin.Forms 预览器 当使用 Xamarin.Forms 3.1.0.583944 版或更高版本时,Xamarin.Forms 预览器现提供工具箱支持。...Xamarin.Forms 控件将在工具箱中显示,这让工具箱新手们能更轻松地找到它们。 还可将控件拖放到 XAML 代码编辑器中,从而在页面上添加控件。

    8.2K10

    WPF是什么_wpf documentviewer

    那么为了能使用起来“自如”,对GridView有个系统的了解,还是有必要学习一下。 二、GridView 2.1. 概述 GridView视图模式是ListView控件的视图模式中的一种。...若你显式地将可视化元素定义为数据项,则它只能在GridView中出现一词。存在这种限制是因为一个元素只能有一个父亲。 2.3.3....当用户拖动表头时,会显示标题的浮动列以及一条显示插入位置的实线。...滚动查看内容 若GridView的大小不足以显示所有项,用户可以使用ScrollViewer控件提供的滚动条水平或垂直滚动。若所有内容一开始都可见,滚动条将被隐藏。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.7K20

    Flutter 刷新页面:通过下拉刷新提升用户体验

    Flutter 中的 RefreshIndicator 被设计来配合 ListView 或者其他滚动的挂件使用,通过可视化的反馈和平缓的更新动作来提升用户体验。...Flutter 响应式框架能够在数据更改时,更新应用程序的用户界面。 下拉刷新管理数据 为了有效联合下拉刷新来管理状态,我们可以在众多 Flutter 生态中选择其中一种。...构建用于下拉刷新的小部件 为了实现下拉刷新,我们从可滚动挂件开始,比如 ListView 或者 ScrollView,这些将会是 RefreshIndicator 挂件的 child 内容。...比如,如果用户读一篇文章,然后更新页面,他们应该保持在原来的位置。为了实现这个,我们应该实现在刷新之后保持滚动位置的逻辑。...这可能就要引入先进的状态管理模式,比如 Bloc, Redux 或者 MobX,它们可以帮助我们更可预测性地管理刷新操作来触发状态更改。

    27210

    flutter仿BOSS直聘(二),大前端技术实现

    为什么选仿BOSS直聘作为题材?...为了让项目接近真实,这次连服务端也实现了。先把开源地址提供给大家: github地址: 服务端版本:flutter仿boss直聘服务端. flutter版本:flutter仿boss直聘....布局语义化,滥用布局组件,并尽量简化组件嵌套结构 技术细节 实现启动画面,在启动1.5秒后,跳转到app里,并且把启动画面的路由remove掉。...大家应该都用过,只是需要记住一点,列表再跳转详情时需要记录当前列表的滚动位置,只需加入以下代码即可: key: new PageStorageKey('key-name') Hero动画,在详情页面里...并计算滚动位置的方式修改state属性让appBar的title根据滚动位置显示隐藏。

    1.9K20

    我的2023:几乎没写 Java 代码的一年,如何偿还技术债

    我也例外,3天假期躺了3天。当时的我正在另一个部门支援做XamarinXamarin是一个基于.NET开发的跨平台解决方案,当时的任务主要是Android端和IOS端。...前期在调查的时候,就感觉这东西属于前端+后端,但做几个画面之后发现,这还是属于前端,因为真正的数据,还是保留在另一个服务器上。整体上,有保留页面和逻辑,页面是HTML的变种,除了一些特定的标签,属性。...><ContentPage xmlns="http://<em>xamarin</em>.com/schemas/2014/<em>forms</em>" xmlns:x="http://schemas.microsoft.com...TypeScript 是Js的超集,<em>为什么</em>用到这个技术呢?...在工作中学元旦前后看起来和Java开发毫无关系,怎样<em>能在</em>工作中学到Java呢?

    44070

    已中招!Android 基础面试常常吊死在这几个问题上……

    3、面试官:为什么字节码不能在Android中运行? 4、面试官:Gradle中的BuildType是什么?你一般用它来干什么? 5、面试官:简述一下Android的构建过程!...3、面试官:为什么字节码不能在Android中运行? 应聘者:Android 使用的是 DVM ( Dalvik 虚拟机)而不是 JVM ( Java 虚拟机)。 面试官:不错,答上来了!...创建视图需要花费时间,因此您的滚动很可能不会很流畅。这就是为什么 RecyclerView 会利用以下事实:滚动时,新行出现在屏幕上,而旧行消失在屏幕上。...ViewHolder模式:Recyclerview实现了ViewHolders模式,但在ListView 中不是必需的。RecyclerView 在滚动时回收并重用单元格。...在 ListView 中, findViewById() 在滚动 ListView 期间,代码可能会频繁调用,这可能会降低性能。即使适配器返回膨胀视图以进行回收,仍然需要查找元素并进行更新。

    2K20

    Hippy 常用调试方法和常见问题案例

    相较于其他跨端框架,Hippy 对前端开发者友好:紧贴 W3C 标准,遵从网页开发各项规则,使用 JavaScript 为开发语言,同时支持 React 和 Vue 两种前端主流框架。...[Safari 调试菜单位置] 然后就可以用 Safari 开始调试了,唯一要注意的时,断点需要在启动后才生效,启动时是断不下来的,启动问题可以在关键点加上日志,日志能够正常输出。...通过观察它,我们可以了解到最终通过 React、Vue 解析后的组件是什么样的,可以观察到为什么界面没有更新,或者样式不如预期。...ScrollView(Vue 的 div + overflow-x/y: scroll)或者 ListView(Vue 的 ul/li)无法滚动 在 Hippy 中只有这两种 View 是可以滚动的,剩下的都不可以滚动...4. iOS 上 ListView 渲染,但 Android 没问题 首先需要检查 numberOfRows 参数是否真的是 ListView 中 ListItemView 的数量,这个除了在业务代码中打断点查看数据数量是否和

    4.5K100

    .NET周报 【5月第3期 2023-05-21】

    Singleton服务为什么不能依赖Scoped服务? 多个构造函数的选择机制? 源码是如何识别循环依赖的?...虽然说很多程序员,他们日常主要工作是CRUD,但是学习设计模式也是有助于学习公司的框架,另外设计模式是为了可重用代码、让代码容易被他人理解、保证代码可靠性,所以学习设计模式对提升编程能力还是很有帮助的...调试器 z/用于 Unix 的远程文件资源管理器 导入STM32CubeIDE工程 Vcpkg 企业管理 在组织的 Intranet 网站上托管和部署 Visual Studio 布局 支持存储库中任何位置的多个...【英文】Xamarin.Forms 和 Essentials 现在以 Android 13(预览版)为目标 - Xamarin 博客 https://devblogs.microsoft.com/xamarin.../xamarin-forms-essentials-target-android13-preview/ Xamarin.Forms 和 Essentials 现在可以面向 Android 13(预览版)

    29940

    国内 Mono 相关文章汇总

    一则新闻《软件服务提供商Xamarin融资1200万美元》,详细的内容可以看Xamarin的官方博客Xamarin raises $12M to help you make better apps faster...V1.0 发布 在 Linux 操作系统中运行 ASP.NET 4 (上) 在 Linux 操作系统中运行 ASP.NET 4 (中) 在 Linux 操作系统中运行 ASP.NET 4 (下) 再谈为什么要使用...ISharedPreferences 进行状态保持  会话保持 应用程序首选项保存 mono for android 自定义titleBar Actionbar 顶部导航栏 修改 样式 学习 mono for android Listview...高版本VS发布时预编译导致Mono中Razor找不到视图 一键部署mono 免费空间支持c#  再也担心伙食费换空间了 绿色版的Linux.NET——“Jws.Mono” 兼容Mono的下一代云环境Web...CentOS 7.2下安装Mono 5.0 MONO 如何打包 .NET程序独立运行(winform篇) 从零開始学Xamarin.Forms(一) 概述 GODOT 3.0 开发进度汇报 #7 .NET

    11.2K60

    Qml开发中的性能Tips(翻译文)

    2.2 在ListView/GridView中使用CacheBuffer 在某些情况下,cacheBuffer在改善ListView/GridView性能方面很有用。...请注意,cacheBuffer以像素为单位定义,例如: 如果委托高20像素,则cacheBuffer设置为40(最多2个委托实例),可见区域下方的2个委托实例可以保留在内存中。...设置此值可以提高滚动行为的流畅性,但要牺牲额外的内存使用量。数据本身缓存,但缓存的是实例化委托。 对于较短的列表,那么其中每个项都可以缓存。...cacheBuffer只是推迟了问题的发生,也就是说,它只是将委托创建的位置推到列表/网格可见部分的上方/下方。...虽然创建列表会慢一些,但是列表滚动流畅。 4.1 在过渡动画中尽可能为屏幕的小区域设置动画 如果您需要在一秒钟内移动3个元素,请尝试每次移动300毫秒。

    4.9K32

    RecyclerView 必知必会

    不过我们发现和ListView有点像,本文后面会介绍RecyclerView和ListView的区别。 为什么会出现RecyclerView?...但是RecyclerView的出现会让很多开源项目被废弃,例如横向滚动ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...这些功能在RecyclerView中都没有直接的接口,要自己实现(虽然实现起来很简单),因此如果只是实现简单的显示功能,ListView无疑简单。...那么如何在破坏原有Adapter实现的情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合的方式,在破话原有类代码的情况下,对原有类的功能进行扩展。...BaseRecyclerViewAdapterHelper是一个比较火的RecyclerView扩展库,仔细一看发现,这里面80%的功能在我们这篇文章中都实现了。

    4.2K90

    RecyclerView必知必会

    不过我们发现和ListView有点像,本文后面会介绍RecyclerView和ListView的区别。 为什么会出现RecyclerView?...但是RecyclerView的出现会让很多开源项目被废弃,例如横向滚动ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...这些功能在RecyclerView中都没有直接的接口,要自己实现(虽然实现起来很简单),因此如果只是实现简单的显示功能,ListView无疑简单。...那么如何在破坏原有Adapter实现的情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合的方式,在破话原有类代码的情况下,对原有类的功能进行扩展。...BaseRecyclerViewAdapterHelper是一个比较火的RecyclerView扩展库,仔细一看发现,这里面80%的功能在我们这篇文章中都实现了。

    4.7K20

    Flutter技术与实战(4)

    当列表滚动到相应位置时,ListView 会调用该方法创建对应的子 Widget。 itemCount,表示列表项的数量,如果为空,则表示 ListView 为无限列表。...但如果提前设置好 itemExtent,ListView 则可以提前计算好每一个列表项元素的相对位置,以及自身的视图高度,省去了无谓的计算。...ListView 的组件控制器则是 ScrollControler,我们可以通过它来获取视图的滚动信息,更新视图的滚动位置。...关联后才可以监听到滚动信息;通过 NotificationListener 则可以监听其子 Widget 中的任意 ListView,不仅可以得到这些 ListView 的当前滚动位置信息,还可以获取当前的滚动事件信息...需要注意的是,Positioned 控件只能在 Stack 中使用,在其他容器中使用会报错。

    10.8K20
    领券