### Method

# GObject Object bind_property_full

since: 2.26

#### Declaration

    GBinding*
    g_object_bind_property_full (
      GObject* source,
      const gchar* source_property,
      GObject* target,
      const gchar* target_property,
      GBindingFlags flags,
      GBindingTransformFunc transform_to,
      GBindingTransformFunc transform_from,
      gpointer user_data,
      GDestroyNotify notify
    )

#### Description

Complete version of g_object_bind_property().

Creates a binding between `source_property` on `source` and `target_property` on `target`, allowing you to set the transformation functions to be used by the binding.

If `flags` contains `G_BINDING_BIDIRECTIONAL` then the binding will be mutual: if `target_property` on `target` changes then the `source_property` on `source` will be updated as well. The `transform_from` function is only used in case of bidirectional bindings, otherwise it will be ignored

The binding will automatically be removed when either the `source` or the `target` instances are finalized. This will release the reference that is being held on the `GBinding` instance; if you want to hold on to the `GBinding` instance, you will need to hold a reference to it.

To remove the binding, call g_binding_unbind().

A `GObject` can have multiple bindings.

The same `user_data` parameter will be used for both `transform_to` and `transform_from` transformation functions; the `notify` function will be called once, when the binding is removed. If you need different data for each transformation function, please use `g_object_bind_property_with_closures()` instead.

Available since: 2.26

The implementation of this method is provided by `g_object_bind_property_with_closures()` in language bindings

#### Parameters

`source_property`

  Type: `const gchar*`

  The property on `source` to bind.

  The data is owned by the caller of the method.
  The value is a NUL terminated UTF-8 string.

`target`

  Type: `GObject`

  The target `GObject`.

  The data is owned by the caller of the method.

`target_property`

  Type: `const gchar*`

  The property on `target` to bind.

  The data is owned by the caller of the method.
  The value is a NUL terminated UTF-8 string.

`flags`

  Type: `GBindingFlags`

  Flags to pass to `GBinding`.

`transform_to`

  Type: `GBindingTransformFunc`

  The transformation function from the `source` to the `target`, or `NULL` to use the default.

  The argument can be `NULL`.

`transform_from`

  Type: `GBindingTransformFunc`

  The transformation function from the `target` to the `source`, or `NULL` to use the default.

  The argument can be `NULL`.

`user_data`

  Type: `gpointer`

  Custom data to be passed to the transformation functions, or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the method.

`notify`

  Type: `GDestroyNotify`

  A function to call when disposing the binding, to free resources used by the transformation functions, or `NULL` if not required.

  The argument can be `NULL`.

#### Return value

Type: `GBinding`

The `GBinding` instance representing the binding between the two `GObject` instances. The binding is released whenever the `GBinding` reference count reaches zero.

The data is owned by the instance.