Windows Presentation Foundation
How to: Create a Binding in Code

This example shows how to create and set a Binding in code.

Example

The FrameworkElement class and the FrameworkContentElement class both expose a SetBinding method. If you are binding an element that inherit either of those classes, you can call the SetBinding method directly, as in following example. In this example, myDataObject is an instance of MyData class and myBinding is the source Binding object. MyData class is a defined class that contains a string property named MyDataProperty. The following example shows how to bind the text content of mytext, an instance of TextBlock, to MyDataProperty.

Visual Basic
Dim data1 As New MyData(DateTime.Now)
Dim binding1 As New Binding("MyDataProperty")
binding1.Source = data1
Me.myText.SetBinding(TextBlock.TextProperty, binding1)
C#
//make a new source
  MyData myDataObject = new MyData(DateTime.Now);      
  Binding myBinding = new Binding("MyDataProperty");
  myBinding.Source = myDataObject;
  myText.SetBinding(TextBlock.TextProperty, myBinding);

For the complete code sample, see Creating a Binding in Code Sample.

Alternatively, you can use the SetBinding method of the BindingOperations class. In the following example, myNewBindDef is a Binding object that describes the binding. The binding target is myDateText, an instance of the TextBlock class.

C#
    // myDatetext is a TextBlock object that is the binding target object
        BindingOperations.SetBinding(myDateText, TextBlock.TextProperty, myNewBindDef);
        BindingOperations.SetBinding(myDateText, TextBlock.ForegroundProperty, myNewBindDef);
See Also

Concepts

Other Resources



Community Content

XgenX
Wrong variable names used in VB example?
data1 and Binding1 should be myDataObject and Binding to conform to description text. Kind of throws things off if you just call it different names in different places.

LukeSkywalker
Explanatory Pseudocode Example

I found this simple notion remarkably difficult to get my head around and the examples were confusing. He's my attempt:


instanceOfTargetControl.SetBinding(

TargetControlType.StaticDependencyPropertyField,


new Binding("NameOfSourceProperty") { Source = ActualSourceObjectInstance, Mode = whatever });




For the sake of example, I have a custom Login control which uses a TextBox to accept input. For convenience, my control exposes the Username in its own property. I need to keep the internal TextBox.Text in synch with my public LoginControl.Username property...

So the following code lives inside of my custom Login control and binds the Text property on a private instance of a TextBox to the Username property of my Login control.:


textBoxControlInstance.SetBinding(
TextBox.TextProperty,
new Binding("Username") { Source = this, Mode = BindingMode.TwoWay });

Page view tracker