Pass a value to another screen

Zain picture Zain · Aug 30, 2016 · Viewed 23.9k times · Source

I have a screen where the user can select an option (not a browse gallery as it does not do what is required).

I want to pass the item the user has selected to the pre-made "DetailScreen1" which is used by the browse gallery.

I looked at the browse screen but did not see how it does it as the navigate onselect event is just normal navigation.

Code:

Navigate(DetailScreen1, ScreenTransition.Fade)

I want to do something like

Navigate(DetailScreen1, ScreenTransition.None {Last(listOfStuff)})

Thanks

Answer

carlosfigueira picture carlosfigueira · Sep 1, 2016

You can use the third parameter of the Navigate function to pass extra parameters to the context of the screen being navigated to. For example, if your first screen has a dropdown and a text input control that you want to pass the values to the next screen, you can use the following expression:

Navigate(DetailScreen1, ScreenTransition.Fade, { text: TextInput1.Value, dropdownChoice: Dropdown1.Selected.Value })

In the DetailScreen1, you can use those context variables as they'll be available.

Here's an example: the dropdown in the first screen contains a list of sections, and after selecting one you would navigate to another page:

Sample result

In the "right arrow", we can set the following OnSelect property:

Navigate(ProductsScreen, ScreenTransition.Fade, { selectedSection: Dropdown1.Selected.Value })

In the ProductsScreen, you can then have a gallery whose items are filtered based on that value that was passed:

Items: Filter(AllProducts, Section = selectedSection)