Power Apps 中的 Back 和 Navigate 函数

更改显示的屏幕。

概述

大多数应用都包含多个屏幕。 BackNavigate 函数可用于更改所显示的屏幕。 例如,如果您希望用户在选中某个按钮后显示其他屏幕,请将该按钮的 OnSelect 属性设置为一个包含 Navigate 函数的公式。 在这个公式中,您可以指定视觉变换效果(比如 Fade)来控制屏幕切换方式。

BackNavigate 只能更改当前显示的屏幕。 当前未显示的屏幕仍然在后台运行。 您可以构建公式来引用其他屏幕上控件的属性。 例如,用户可以更改某一个屏幕上滑块的值,导航到在公式中使用这个值的另一个屏幕,确定对新屏幕的显示有何影响。 然后,用户可以导航回原来的屏幕,并且确认滑块保留了自己的值。

当用户在屏幕之间导航时,上下文变量也会保留。 您可以使用 Navigate 设置公式会显示的屏幕的一个或多个上下文变量,这是从屏幕外部设置上下文变量的唯一方法。 这个方法可用于将参数传递到屏幕。 如果您使用过另一款编程工具,就会发现这个方法与将参数传递给过程非常相似。

这两个函数都只能在行为公式中使用。

在第一个参数中,指定要显示的屏幕的名称。

在第二个参数中,指定旧屏幕切换为新屏幕的方式:

Transition 参数 描述 演示
ScreenTransition.Cover 新屏幕将滑入视图,从右向左移动,覆盖当前屏幕。 屏幕过渡覆盖动画
ScreenTransition.CoverRight 新屏幕将滑入视图,从左向右移动,覆盖当前屏幕。 屏幕过渡向右覆盖动画
ScreenTransition.Fade 当前屏幕淡出以显示新屏幕。 屏幕过渡淡化动画
ScreenTransition.None(默认) 新屏幕将快速替换当前屏幕。 无屏幕过渡动画
ScreenTransition.UnCover 盖当屏幕将滑出视图,从右向左移动,呈现新屏幕。 屏幕过渡呈现动画
ScreenTransition.UnCoverRight 盖当屏幕将滑出视图,从左向右移动,呈现新屏幕。 屏幕过渡向右呈现动画

可以使用 Navigate 创建或更新新屏幕的上下文变量。 第三个参数是可选的,它可用于传递一条记录,其中包含上下文变量名称(以名称的形式)和上下文变量的新值。 这条记录就是用于 UpdateContext 函数的记录。

设置旧屏幕的 OnHidden 属性和/或新屏幕的 OnVisible 属性,以在过渡期间进行其他更改。 App.ActiveScreen 属性将更新以反映更改。

Navigate 通常返回 true,但是如果遇到错误,将返回 false

导航上下文变量在文章在屏幕之间导航中有介绍。

Back

Back 函数返回最近显示的屏幕。

对于每个 Navigate 调用,应用都会跟踪出现的屏幕和过渡。 您可以使用连续的 Back 调用直接返回到用户启动应用时出现的屏幕。

Back 函数运行时,默认情况下使用反向过渡。 例如,如果屏幕通过 CoverRight 过渡出现,Back 将使用 UnCover(向左)返回。 FadeNone 是它们各自的反向。 将可选参数传递给 Back 可以强制执行特定的过渡。

Back 通常返回 true,但如果用户自启动应用以来未导航到另一个屏幕,则返回 false

语法

Back( [ Transition ] )

  • Transition - 可选。 切换当前屏幕和上一个屏幕时要使用的视觉过渡效果。 请参阅本文前文中所述此参数的有效值列表。 默认情况下,屏幕返回所使用的过渡与屏幕出现的过渡相反。

Navigate( Screen [, Transition [, UpdateContextRecord ] ] )

  • Screen - 必需。 要显示的屏幕。
  • Transition - 可选。 切换屏幕时要使用的视觉过渡效果。 请参阅本文前文中所述此参数的有效值列表。 默认值为 None
  • UpdateContextRecord - 可选。 一条记录,其中包含至少一列的名称以及每列的值。 这一条记录用于更新新屏幕的 上下文变量,就像传递到 UpdateContext 函数一样。

示例

公式 描述 结果
Navigate( Details ) 显示 Details 屏幕,没有任何过渡效果,也不会更改上下文变量的值。 Details 屏幕会快速显示。
Navigate( Details, ScreenTransition.Fade ) 淡入淡出 过渡效果显示 Details 屏幕。 不更改上下文变量的任何值。 当前屏幕淡化消失,以显示 Details 屏幕。
Navigate( Details, ScreenTransition.Fade, { ID: 12 } ) 使用 淡入淡出 过渡效果显示 Details 屏幕,并且将 ID 上下文变量的值更新为 12 当前屏幕淡化消失,以显示 Details 屏幕,并且将这个屏幕的上下文变量 ID 设置为 12
Navigate( Details, ScreenTransition.Fade, { ID: 12 , Shade: Color.Red } ) 淡入淡出 过渡效果显示 Details 屏幕。 将 ID 上下文变量的值更新为 12,并且将 Shade 上下文变量的值更新为 Color.Red 当前屏幕淡化消失,以显示 Details 屏幕。 将 Details 屏幕的上下文变量 ID 设置为 12,并且将上下文变量 Shade 设置为 Color.Red。 如果将 Details 屏幕上某一控件的 Fill 属性设置为 Shade,则该控件会显示为红色。
Back() 显示带有默认返回过渡效果的上一屏幕。 通过当前屏幕显示所使用的过渡的反向过渡显示上一个屏幕。
Back( ScreenTransition.Cover ) 显示带有 Cover 过渡的上一屏幕。 通过 Cover 过渡显示上一个屏幕,不考虑当前屏幕显示所使用的过渡。

分步操作

  1. 创建空白应用。

  2. 向其添加第二个屏幕。

    应用包含两个空白屏幕:Screen1Screen2

  3. Screen2Fill 属性设置为值 Gray

  4. Screen2 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:

    Navigate( Screen1, ScreenTransition.Cover )
    
  5. 按住 Alt 键,并选择此按钮。

    Screen1 通过向左覆盖的过渡以白色背景显示。

  6. Screen1 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:

    Back()
    
  7. 按住 Alt 键,并选择此按钮。

    第二个屏幕通过向右呈现(Cover 的反向过渡)以灰色背景显示。

  8. 反复选择每个屏幕上的按钮来回尝试。

再举一例

另请参阅

使用上下文变量