建立或更新目前畫面中的內容變數

概觀

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

內容變數的範圍侷限在畫面中,這表示您無法建置公式來參考另一個畫面上的內容變數。 如果您已用過其他程式設計工具,您可以將內容變數看成類似於本機變數。 如果您想要和全域變數對等的項目,請建立集合,方法是使用 CollectClearCollect 函式。

PowerApps 取決於使用者與應用程式互動時所自動重新計算的公式。 內容變數並不會提供這項好處,因此會讓您的應用程式變得更難建立並受到了解。 在使用內容變數之前,請先檢閱使用變數

說明

若要建立或更新內容變數,請傳遞一筆記錄UpdateContext 函式。 在每一筆記錄中,指定資料行的名稱,以定義或比對變數的名稱,以及您想要為該變數設定的值。

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

內容變數一經定義就無法移除。

您可以使用變數的資料行名稱來參考公式中的內容變數。 例如,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. 將預設畫面命名為來源,新增另一個畫面,並將它命名為目標

  2. 在 [來源] 畫面上新增兩個按鈕,並設定其 Text 屬性,讓一個按鈕使用英文,另一個按鈕使用西班牙文

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

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

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

  6. 在 [目標] 畫面上,選取 [插入] 索引標籤上的 [圖形],然後選取 [上一步] 箭號。

  7. 將 [上一步] 箭號的 OnSelect 屬性設定為下列公式:
    Navigate(Source, ScreenTransition.Fade)

  8. 從 [來源] 畫面上按 F5 鍵,然後選取任一語言的按鈕。

    在 [目標] 畫面上,標籤會以與您所選按鈕對應的語言來顯示。

  9. 選取 [上一步] 箭頭以返回 [來源] 畫面,然後選取另一個語言的按鈕。

    在 [目標] 畫面上,標籤會以與您所選按鈕對應的語言來顯示。

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

另一個範例