# z:Function

`z:Function` is similar to, and has the same syntax as `z:Bind` It is different because it does not self-evaluate and instead relies on its consumer to ask it to evaluate `z:Function` can be consumed by `TapTrigger`, `EdgeTrigger` and `Latch`

**Usage**

```
TargetProperty = "{ z:Function <some expression>   [, Source=<some source>] }"
```

Where _\<some expression>_ is any valid expression, making use of properties on the _BindingSource_ Typically you would put either an assignment into a z:Function

```
TapAction="{z:Function 'Things.TapCount = Things.TapCount + 1'}"
```

or a function call

```
TapAction="{z:Function 'OpenUrl(Customer.LoginUrl, Customer.UserName)'}"
```

or both ...

{% code overflow="wrap" %}
```markup
TapAction="{z:Function 'Things.TapCount = Things.TapCount + 1, OpenUrl(Customer.LoginUrl)'}"
```
{% endcode %}
