加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 清除Xamarin表单模态堆栈

发布时间:2020-12-15 20:59:43 所属栏目:百科 来源:网络整理
导读:我有一个Xamarin.Forms应用程序,它使用NavigationPage进行正常的屏幕导航.从其中一个屏幕(Stay Detail),我需要显示一系列4个顺序模态页面(如向导),它们收集数据以完成与Stay Detail相关的过程.进程中的每个页面都有一个“取消”按钮,允许用户取消向导并返回
我有一个Xamarin.Forms应用程序,它使用NavigationPage进行正常的屏幕导航.从其中一个屏幕(Stay Detail),我需要显示一系列4个顺序模态页面(如向导),它们收集数据以完成与Stay Detail相关的过程.进程中的每个页面都有一个“取消”按钮,允许用户取消向导并返回到保持详细信息.这是一般流程:

modal1 -> modal2 -> modal3 -> modal4
           /                                    
 StayDetail                                      StayDetail

从StayDetail执行PushModalAsync以启动modal1,然后在各个模态页面之间执行PushModalAsync / PopModalAsync很容易.但是,我无法想出从第二个模态或更高版本退出模态堆栈的干净方法.最好的方法是什么?

解决方法

每次用户导航到下一个模态时,您不能只执行以下操作吗?

await Navigation.PushModalAsync(new modal2()); //Send user to new modal2 pages
await Navigation.PopModalAsync(); //Pop modal1 page

然后当他们点击取消按钮时,你会再做一次PopModalAsync()并返回到StayDetail页面,因为你已经弹出了下面的所有模态.

如果他们在获得modal2之后需要一种方法回到modal1,你可以简单地传递modal1需要的任何数据,同时创建一个新的页面:

Modal1Data modalData = new Modal1Data();

await Navigation.PushModalAsync(new modal1(modalData)); //Push old modal with previously entered data
await Navigation.PopModalAsync(); //Pop modal2 page

您甚至可以在导航回modal1之前保存已从modal2输入的数据,这样当用户返回到modal2时,他们的所有信息仍会显示在屏幕上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读