Функция UpdateContext создает или обновляет переменные контекста текущего экрана.

Обзор

Функция UpdateContext позволяет создать переменную контекста, которая временно содержит определенные сведения, например число нажатий кнопки или результаты выполнения операций с данными.

Переменные контекста привязаны к экрану. Это означает, что вы не можете создать формулу, ссылающуюся на переменную контекста другого экрана. При использовании другого средства программирования переменную контекста можно представить как локальную переменную. Если вам нужен эквивалент глобальной переменной, создайте коллекцию, используя функцию Collect или ClearCollect.

Служба PowerApps основывается на формулах, которые автоматически вычисляются при взаимодействии пользователя с приложением. Переменные контекста не предоставляют эту возможность, а также могут усложнить как процесс создания, так и структуру самого приложения. Прежде чем приступить к работе с переменной контекста, ознакомьтесь с общими сведениями о переменных.

Описание

Чтобы создать или обновить переменную контекста, передайте одну запись в функцию UpdateContext. В каждой записи укажите имя столбца, которое определяет имя переменной или соответствует ему, и значение переменной.

  • Если вы указали имя ранее определенной переменной, функция UpdateContext задает для нее указанное значение.
  • Если вы указали имя еще не созданной переменной, функция UpdateContext создает переменную с этим именем и задает для нее указанное значение.
  • Если вы определили переменную ранее, но не указали ее конкретно в этой формуле UpdateContext, ее значение не изменяется.

После определения переменную контекста удалить невозможно.

Ссылку на переменную контекста в формуле можно добавить на основе имени столбца этой переменной. Например, функция UpdateContext( { ShowLogo: true } ) создает переменную контекста с именем ShowLogo и задает для нее значение true. Затем значение этой переменной контекста можно использовать по имени ShowLogo в формуле. Вы можете написать переменную контекста ShowLogo как формулу для свойства Visible элемента управления "Изображение", а затем показывать или скрывать этот элемент в зависимости от заданного значения переменной (true или false).

Как показано далее в примерах, переменные контекста могут содержать несколько типов данных, в том числе:

  • одиночное значение;
  • запись;
  • коллекцию;
  • ссылку на объект;
  • любой результат формулы.

Значение переменной контекста хранится до закрытия приложения. Если определить переменную контекста и назначить ей значение для определенного экрана, данные не изменятся даже после переключения на другой экран.

Каждая переменная контекста привязана к конкретному экрану. Если вы определили переменную контекста на одном экране, а затем хотите изменить ее на другом, необходимо создать формулу на основе функции 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 } ) Создает или изменяет переменные контекста Name и Score, задавая для них значения Lily и 10 соответственно. Переменная контекста Name имеет значение Lily, а переменная Score — 10.
UpdateContext( { Person: { Name: "Milton", Address: "1 Main St" } } ) Создает или изменяет переменную контекста Person, задавая для нее запись в качестве значения. Запись содержит два столбца: Name и Address. Столбец Name имеет значение Milton, а столбец Address — 1 Main St. Переменной контекста Person присваивается значение записи { Name: "Milton", Address: "1 Main St" } }.

Добавьте ссылку на эту запись в целом по имени Person или на ее отдельный столбец с помощью параметра Person.Name или Person.Address.
UpdateContext( { Person: Patch( Person, {Address: "2 Main St" } ) } ) В сочетании с функцией Patch позволяет обновить переменную контекста Person, задав для столбца Address значение 2 Main St. Переменной контекста Person присваивается значение записи { Name: "Milton", Address: "2 Main St" } }.

Пошаговый пример

  1. Присвойте экрану по умолчанию имя Source и добавьте еще один экран с именем Target.

  2. На экране Source добавьте две кнопки и задайте для их свойств Text значения English и Spanish.

  3. В качестве значения свойства OnSelect кнопки English задайте это выражение:
    Navigate(Target, ScreenTransition.Fade, {Language:"English"})

  4. В качестве значения свойства OnSelect кнопки Spanish задайте это выражение:
    Navigate(Target, ScreenTransition.Fade, {Language:"Spanish"})

  5. На экране Target добавьте метку и задайте в качестве значения ее свойства Text это выражение:
    If(Language="English", "Hello!", "Hola!")

  6. На экране Target перейдите на вкладку Вставка, выберите Фигуры и нажмите кнопку со стрелкой "Назад".

  7. Задайте для свойства OnSelect стрелки "Назад" эту формулу:
    Navigate(Source, ScreenTransition.Fade)

  8. На экране Source нажмите клавишу F5, а затем нажмите кнопку для любого языка.

    После этого на экране Target появится метка на языке, соответствующем нажатой кнопке.

  9. Нажмите кнопку со стрелкой "Назад", чтобы вернуться на экран Source, и нажмите кнопку для другого языка.

    После этого на экране Target появится метка на языке, соответствующем нажатой кнопке.

  10. Нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.

Другой пример