将值传递到另一个屏幕
Posted
技术标签:
【中文标题】将值传递到另一个屏幕【英文标题】:Pass a value to another screen 【发布时间】:2017-01-07 00:57:43 【问题描述】:我有一个屏幕,用户可以在其中选择一个选项(不是浏览库,因为它不执行所需的操作)。
我想将用户选择的项目传递给浏览库使用的预制“DetailScreen1”。
我查看了浏览屏幕,但没有看到它是如何工作的,因为 navigate onselect 事件只是正常的导航。
代码:
Navigate(DetailScreen1, ScreenTransition.Fade)
我想做类似的事情
Navigate(DetailScreen1, ScreenTransition.None Last(listOfStuff))
谢谢
【问题讨论】:
【参考方案1】:您可以使用Navigate function 的第三个参数将额外参数传递给被导航到的屏幕的上下文。例如,如果您的第一个屏幕有一个下拉菜单和一个文本输入控件,您希望将值传递到下一个屏幕,您可以使用以下表达式:
Navigate(DetailScreen1, ScreenTransition.Fade, text: TextInput1.Value, dropdownChoice: Dropdown1.Selected.Value )
在 DetailScreen1 中,您可以使用那些可用的上下文变量。
这是一个示例:第一个屏幕中的下拉菜单包含一个部分列表,选择一个后,您将导航到另一个页面:
在“右箭头”中,我们可以设置如下 OnSelect 属性:
Navigate(ProductsScreen, ScreenTransition.Fade, selectedSection: Dropdown1.Selected.Value )
然后,您可以在 ProductsScreen 中创建一个库,其项目根据传递的值进行过滤:
Items: Filter(AllProducts, Section = selectedSection)
【讨论】:
这个变量的持久性如何?它是否保留在内存中,或者如果您移动到另一个屏幕,您是否必须重新实例化它?比如像 current_user...?Navigate
的第三个参数将设置目标屏幕中context variable 的值。上下文变量将保留在该屏幕的内存中,直到另一个值设置为相同的变量。例如,如果您导航到传递值 a:1 的屏幕 B,则该屏幕中 a
的值将继续为 1 直到另一个调用(导航到屏幕 B 传递 a
作为参数或UpdateContext) 改变它的值。以上是关于将值传递到另一个屏幕的主要内容,如果未能解决你的问题,请参考以下文章