UpdateContext 函式

適用於: 畫布應用程式

建立或更新目前畫面中的 上下文變數

概觀

使用 UpdateContext 函式建立上下文變數,此變數可暫時存放一項資訊,例如使用者選取按鈕的次數或資料作業的結果。

上下文變數的範圍侷限在畫面控制項中,這表示您無法組建參考另一個畫面控制項上的上下文變數公式。 如果您已用過其他程式設計工具,您可以將上下文變數看成類似於本機變數。 使用 Set 函式 搭配整個應用程式內皆可使用的全域變數。

Power Apps 是建立在使用者與應用程式互動時自動重新計算的公式基礎上。 上下文變數並不會提供這項好處,因此會讓您的應用程式變得更難建立與理解。 在使用上下文變數之前,請先檢閱 搭配變數使用

描述

若要建立或更新上下文變數,請傳遞單筆 記錄UpdateContext 函式。 在每一筆記錄中,指定 欄位 名稱定義或比對變數名稱,以及您想要為該變數設定的值。

  • 如果您指定先前已定義過的變數名稱,UpdateContext 會將變數值設定為您指定的值。
  • 如果您指定的變數名稱尚未存在,UpdateContext 會以該名稱建立變數,並將該變數值設定為您指定的值。
  • 如果您先前定義過變數,但未將它指定在這個特殊的 UpdateContext 公式,其值會保持不變。

內容變數會使用 UpdateContextNavigate 函式 隱式建立。 不需要明確宣告。 如果移除上下文變數的所有 UpdateContextNavigate 參考,該變數將無法存在。 若要清除變數,將其值設為 Blank 函式 的結果。

您可以在撰寫環境中 File 功能表底下的變數視圖查看變數值、定義和使用情況。

您可以使用變數的欄位名稱參考公式中的上下文變數。 例如,UpdateContext( { ShowLogo: true }) 會建立名為 ShowLogo 的上下文變數,並將它的值設定為 true。 您接著可以藉由在公式中使用 ShowLogo 名稱的方式使用此上下文變數的值。 您可以將 ShowLogo 寫入作為映像控制項之 Visible 屬性公式,然後根據上下文變數值是否為 truefalse 來顯示或隱藏該控制項。

如本主題稍後的範例所示,上下文變數可以保留幾種資訊,包含下列幾種︰

  • 單一值
  • 記錄
  • 資料表
  • 物件參考
  • 來自公式的任何結果

上下文變數會將值保留起來直到應用程式關閉為止。 如果您定義上下文變數,並將其值設定在特殊畫面控制項上,該資訊會原封不動即使使用者切換到不同畫面控制項亦然。 一旦關閉應用程式,上下文變數值將會遺失,必須再載入應用程式才能重新建立。

每個上下文變數的範圍都侷限在一個畫面控制項中。 如果您想要在一個畫面控制項上定義上下文變數,並從另一個畫面控制項修改該變數,您必須組建以 Navigate 函式為基礎的公式。 或使用全域變數。

UpdateContext 沒有傳回值,因此您只能在 行為公式 內使用它。

語法

UpdateContext( UpdateRecord )

  • UpdateRecord - 必要項目。 一筆至少包含一個欄位名稱和欄位值的記錄。 您所指定的每個欄位和值都會建立或更新上下文變數。

UpdateContext( { ContextVariable1: Value1 [, ContextVariable2: Value2 [, ... ] ] } )

  • ContextVariable1 - 必要項目。 要建立或更新上下文變數的名稱。
  • Value1 - 必要項目。 要指派給上下文變數的值。
  • ContextVariable2: Value2, ... - 非必要項目。 要建立或更新的其他上下文變數與這些變數值。

範例

公式 描述 結果
UpdateContext( { Counter: 1 } ) 建立或修改上下文變數 Counter,並將其值設定為 1 Counter 值為 1。 您可以在公式中使用名稱 Counter 參考該變數。
UpdateContext( { Counter: 2 } ) 將前一個範例之 Counter 上下文變數的值設定為 2 Counter 值為 2
UpdateContext( { Name: "Lily", Score: 10 } ) 建立或修改上下文變數 NameScore,並將其值分別設定為 Lily10 Name 的值為 Lily,而 Score 的值為 10
UpdateContext( { Person: { Name: "Milton", Address: "1 Main St" } } ) 建立或修改上下文變數 Person,並將其值設定為記錄。 該記錄有兩個欄位,名為 NameAddressName 欄位值為 Milton,而 Address 欄位值為 1 Main St Person 具有 { Name: "Milton", Address: "1 Main St" } } 記錄值。

以名稱 Person 完整參考這筆記錄,或以 Person.NamePerson.Address 參考這筆記錄的個別欄位。
UpdateContext( { Person: Patch( Person, {Address: "2 Main St" } ) } ) 搭配 Patch 函式更新 Person 上下文變數,方法是將 Address 欄位值設定為 2 Main St Person 現在具有 { Name: "Milton", Address: "2 Main St" } } 記錄值。

逐步說明範例 1

  1. 將預設畫面控制項命名為 Source,新增另一個畫面,並將它命名為 Target

  2. Source 畫面控制項上新增兩個按鈕,並設定其 Text 屬性,讓一個按鈕表示 English,另一個按鈕表示 Spanish

  3. English 按鈕的 OnSelect 屬性設定為下列運算式:
    Navigate(Target, ScreenTransition.Fade, {Language:"English"})

  4. Spanish 按鈕的 OnSelect 屬性設定為下列運算式:
    Navigate(Target, ScreenTransition.Fade, {Language:"Spanish"})

  5. Target 畫面控制項上新增標籤,並將其Text屬性設定為下列運算式:
    If(Language="English", "Hello!", "Hola!")

  6. Target 畫面控制項上,選取 Insert 索引標籤上的 Shapes,然後選取返回箭號。

  7. 將返回箭頭的 OnSelect 屬性設定為下列公式:
    Navigate(Source, ScreenTransition.Fade)

  8. Source 畫面控制項按 F5 鍵,然後選取任一語言的按鈕。

    Target 畫面控制項上,標籤會以與您所選按鈕對應的語言顯示。

  9. 選取返回箭頭以返回 Source 畫面控制項,然後選取另一個語言的按鈕。

    Target 畫面控制項上,標籤會以與您所選按鈕對應的語言顯示。

  10. 按下 Esc 鍵返回預設工作區。

逐步說明範例 2

  1. 開啟您要使用此公式的畫布應用程式。
  2. 從命令列選取新增畫面,以新增空白畫面。
  3. 新增一個按鈕,並將其 OnSelect 屬性設為此公式:
    UpdateContext( { Name: "Lily", Score: 10 } )