We are excited to bring a host of PowerApps Studio capabilities to make authoring apps faster and powerful in the latest release (version 2.0.660). Thank you for all the feedback, here are some of the capabilities in this release to try out.

Properties Panel

We are excited to add a Properties panel to the right of the canvas in PowerApps Studio. The Properties panel will expose the most common properties of any control that you can configure visually without writing an expression. In the example below, we show you how to configure a Buttoncontrol, but you can apply the same principles to other controls.

The Data panel will surface configuring data sources and binding fields to Gallery and Form control.

The panels have the following capabilities:

Properties panel with categorized properties for color, border, position of controls

Data panel for configuring data sources and fields for Forms and Gallery

Color picker to choose from a wide range of colors without typing in R, G, B values

View the expression in the formula bar for each property by clicking on the property name in the panel

Properties with complex expressions are locked in the Properties panel to prevent overwriting them with static values

This is the first update of the Properties panel, we would love to hear your feedback! The current update does not remove any existing functionality in Studio. However, we will be simplifying the ribbon in the future and have properties and behaviors (like OnSubmit) light up in one place – the properties panel.

Viewing data with the Edit form

Apps created from data generate three screens: a list view of all records using a Gallery control, a display view for a selected record using a Display form control, and an edit view for changing that record using an Edit form control. What if we could simplify that to just two screens? What if the Edit form control could be put into a mode that acts like a Display form control? You would only need to author your form once. That’s just what we have done. The Edit form control now has an extra mode: View. You enter this mode by calling the ViewForm function. You can also default to this mode by setting the DefaultMode property on the control.

Setting this mode has a trickle down effect on the cards and controls within it. To understand this, let’s start at the leaves of the tree.

In an effort to make controls more reusable for display and input/edit tasks, all controls now have a DisplayMode property that supports values of Edit, View, or Disabled. With this property, you can configure the control to allow user input (Edit), only displays data (View) or be disabled (Disabled). In View mode, input controls such as Text input, Drop down, Date Picker will only display the text value and will not render any interactive elements or decorations. This makes them suitable to be displayed in Forms or as readable output. Controls that had a Disabled property previously will have that value automatically mapped to the new DisplayMode property.

Stepping up a level, each card now has a DisplayMode property too with the same values. By default, each input control within the card has the formula DisplayMode = Parent.DisplayMode. You can break this dependency chain anytime you like to take finer grained control over your cards and controls. Stepping up one more level, the Edit form also has a DisplayMode property. Again by default, each card has the formula DisplayMode = Parent.DisplayMode. And again, you can break this dependency chain anytime you like.

How does the Edit form’s Mode and DisplayMode relate? DisplayMode is derived from Mode and cannot be set independently. They aren’t exactly the same since both New and Edit modes both result in a DisplayMode of Edit so that the controls of the form can be edited, while ViewMode results in a ViewDisplayMode.

So to recap:

Set the Edit form Mode with the DefaultMode property and EditForm, NewForm, and ViewForm functions.

The Edit form’s DisplayMode property will be set accordingly automatically.

By default, the card derives from the Edit form’s DisplayMode with Card.DisplayMode = Parent.DisplayMode. You can modify this dependency anytime you like.

By default, the input controls within a card derive from the Card’s DisplayMode with Control.DisplayMode = Parent.DisplayMode. You can modify this dependency anytime you like.

We have not changed apps created from data to use this new capability yet. We will in time. Your feedback on the new mode is much appreciated.

Global variables

Until now, variables have been hard to work with. Context variables are awkward to set with UpdateContext’s record syntax and collections are awkward for single values as they have to be placed in a table.

Enter the new Set function. Set( HappyDays, 1 ) anywhere in your app. Use HappyDays anywhere in your app. It’s that simple. The value stored can be a number, text string, date, Boolean, record, table, or object.

Context variables and collections still remain in the product and have their place. Context variables are useful for screen variables and for passing in values with the Navigate function while collections can be saved and loaded from the local device with SaveData and LoadData. You can also see your global variables in the Variables pane under the File menu:

Reset function

The new Reset function will reset the value of a control to what it was before the end user modified it. It does the same thing as toggling the Reset property but is easier to use.

For example, imagine you had a Text input control named FirstName that had a Default property of “Fred”. The end user types in the value “Freddy” instead, but later changes their mind and wants to go back to the original. As an author, you can offer a “Cancel” button that has the formula Reset( FirstName ) to have the control return to the original value.

Please check out our What’s New page for more details on other exciting features! Have feedback for us? We would love to hear them – please post in our forums! We are always actively listening, learning, and responding to your comments and questions.

If there’s a feature you’d like to see in an upcoming release, please submit your idea to us!