Yet for all its power, it is a little complex and that is my reason for launching into this blog series.The rough outline for this series is as follows: To understand what databinding is and the service it provides us with, it is worth looking at how you wire-up a user-interface without using databinding.
NET languages are typically termed 'CLR properties' (Where CLR refers to the Common Language Runtime) so that we know which type of property we are talking about!
CLR properties are simply shorthand for methods used to access a backing field.
We simply state that we wish to synchronise a model property with a property of a UI control, and it does the rest.
Our complex diagram above simply becomes the following: Changes in the source property values are pushed to the target property by the binding framework, and (optionally) changes in the target are pushed to the source.
The view has the following XAML (with the various layout properties omitted for clarity): If we consider the model object to be the source of the data and the UI control to be the target.
We can see that we have three separate flows of data: The code for each of these three steps is distributed throughout our code, in the constructor and a variety of event handler.
For each model property that we wish to expose to our user via the view, we have to add code to perform each of these three tasks.
This leads to code that is hard to maintain and dataflow that are hard to trace.
Note that the first argument is the dependency property that is defined on Text Box and is public static.
binding is used, changes to the target property, which typically occur due to user interactions, are propagated from the target to the source.
It is this static field that we use to identify the dependency property when binding to it: However, this is purely convention.