Simple binding occurs on a control that displays a single value; complex binding associates a control with a collection of data in a data source. In one-way data binding, the control is bound to the source for read-only purposes. Changes to the control's value are not reflected in the data source. Two-way binding permits the data source to be updated by changing the control's value(s).
The properties on a custom data source that expose the bound data must be writable, so the object can be updated.