--- title: "Expression Structure Bindings in Perspective" --- # Expression Structure Bindings in Perspective >
## What Is an Expression Structure? An Expression structure is an **object** type of property where several of the sub-items get their values from expression bindings. An Expression Structure bindings allow us to create a custom Expression binding where several expressions give you several values. That is, the output is an **object** rather than a **value**. This binding type is useful in configuring parameters for a script transform, or in cleanly creating a complex object from a single binding. It enables you to create a data structure using a separate expression to populate each entry in the structure. ## Binding Interface The Expression Structure binding is configured similarly to any object in Perspective, except that every **value** property in the object is evaluated via an individual expression. ### Binding Properties | Property Name | Description | | --------------- | ------------------ | | Enabled | Indicates whether the binding should fire. | | Overlay Opt-Out | Indicates whether the component should reflect a bad quality binding via a tag overlay. | | Wait On All | Indicates whether the binding should wait for every expression binding in the structure to finish before completing. If false, each expression in the structure will resolve individually and update their properties at that time. If true, all component properties will receive their new values at the same time. | ## Example 1. Create a new memory Tag called NewTag1. Set the following: - Data Type: **String** - Value: **It Works!** 1. Click **OK** to save the Tag. 1. Create View called **MyParentView**. 1. Place a Carousel component and a Label component on the view. 1. Set the label text as "Parent View." 1. Create another view called **MyChildView**. 1. Place a Label component and an Icon component on the view. 1. Now we need to add two view parameters MyChildView. 1. In the Property Editor under PARAMS, click **Add View** parameter and select the Value option. ![](expression-structure-bindings-in-perspective/2020-07-15_14-44-18.png) 1. Change the word "key" to the parameter name we want, which is "iconPath." 1. Click **Add View Parameter** again. 1. Name the second view parameter "labelText." 1. Next we'll bind the components to the view parameters. On MyChildView, select the Label component. 1. Click the **Binding** ![]() icon next to the text property. 1. Select the Property binding type. 1. Click the **Property Editor** ![]() icon. 1. Scroll down to the labelText view parameter. Click **OK**. Click **OK** again to save the binding. ![](expression-structure-bindings-in-perspective/2020-07-15_15-02-55.png) 1. Select the **Icon** component. 1. Click the **Binding** ![]() icon next to the path property. 1. Select the Property binding type. 1. Click the **Property Editor** ![]() icon. 1. Scroll down to the iconPath view parameter. Click **OK**. Click **OK** again to save the binding. 1. Back on MyParentView, select the Carousel component and set the viewPath property to **MyChildView**. ![](expression-structure-bindings-in-perspective/2020-07-15_13-48-43.png) 1. Next we need to add two view parameters. Still on the MyParentView, click the **Binding** ![]() icon next to **viewParams**. The Edit Binding screen is displayed. 1. Choose Expression Structure as the binding type. Click **Add Object Member...** and select **Value**. ![](expression-structure-bindings-in-perspective/2019-06-04_16-55-36.png) 1. Name this parameter **iconPath**. 1. Click the **Expression** ![](expression-structure-bindings-in-perspective/functions_20small-24.png) icon, then enter "material/insert_emoticon" as the expression. Click **OK**. ![](expression-structure-bindings-in-perspective/2020-07-15_14-31-41.png) 1. Click the **Expand** ![]() icon and select Value to add another parameter. 1. Name this next parameter labelText then click the **Expression** ![](expression-structure-bindings-in-perspective/functions_20small-24.png) icon. 1. For the value, click on the **Tag** ![]() icon then choose the tag. Click **OK**. ![](expression-structure-bindings-in-perspective/2020-07-15_14-22-05.png) 1. Select the **Wait On All** option. This will ensure that all expressions provide a value before this binding will publish its initial value. 1. Click **OK** to save the binding. Now the label text we're using in MyChildView will be populated by this tag (NewTag1). ![](expression-structure-bindings-in-perspective/2020-07-15_14-29-56.png)