Tutorial – Binding one element property to another
The properties of WPF elements can be bound to properties of other WPF Elements. Lets do some simple examples of binding one element to another.
For this tutorial, I assume you are in Visual Studio 2008. I assume that you already know how to create a new Project and choose WPF Application. All examples assume you have a new WPF Application.
I am the believer that one example isn’t enough, so I am going to give you three examples:
Example 1 – Binding and Element’s property to CheckBox.IsChecked
This example will demonstrate binding a Button‘s IsEnabled property to a CheckBox‘s IsChecked property.
Step 1 – Add the elements
- Add two items from the Toolbox:
CheckBoxButton
The
Buttonis namedbutton1and theCheckBoxis namedcheckBox1. - Change the text of the
checkBox1to “Enable button”. This can be done either in the Properties or in the XAML.
Step 2 – Adding Binding to the Button
- In the XAML, locate the
button1element. - Add the following to the
button1element:IsEnabled="{Binding ElementName=checkBox1, Path=IsChecked}"In your project,ElementNamecould be any item. In this example, we only have two elements so far:button1, andcheckBox1.The XAML now looks like this (only two new lines exist):<Window x:Class="BindingATextBoxToASlider.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <Button Content="Button" Height="23" Margin="12,34,416,0" Name="button1" VerticalAlignment="Top" Width="75" IsEnabled="{Binding ElementName=checkBox1, Path=IsChecked}"/> <CheckBox Content="CheckBox" Height="16" Margin="12,12,408,0" Name="checkBox1" VerticalAlignment="Top" /> </Grid> </Window> - Compile and run your program.
- Check and uncheck the box an watch the binding do its work as it enables and disables the button.
Ok, so that was pretty cool. We have a simple example of binding one Element to another.
You can shoot yourself in the foot or Don’t be stupid!
Yes, you can shoot yourself in the foot by doing something stupid.
You could bind an element to itself. Let’s try it just so you can see it happen.
Add the same binding you added to button1 to checkBox1.
Compile and see what happens.
Example 2 – Binding and Element’s property to Slider.Value
This example uses a Slider and a TextBox.
Step 1 – Add the elements
- Add two items from the Toolbox:
TextBoxSlider
The
Slideris namedslider1and theTextBoxis namedtextBox1.
Step 2 – Adding Binding to the TextBox
- In the XAML, locate the
textBox1element. - Add the following to the
textBox1element:Text="{Binding ElementName=slider1, Path=Value}"ElementNamecan be any item. In this example, we only have two elements so far:slider1, andtextBox1.The XAML now looks like this (only two new lines exist):<Window x:Class="BindingATextBoxToASlider.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <TextBox Height="23" Margin="79,62,99,0" Name="textBox1" VerticalAlignment="Top" Text="{Binding ElementName=slider1, Path=Value}"/> <Slider Height="22" Margin="79,34,99,0" Name="slider1" VerticalAlignment="Top" /> </Grid> </Window> - Compile and run your program.
- Slide the slider and watch the binding do its work as its value is displayed in the textBox1 as it changes.
Calculations in XAML Bindings are Unsupported
Ok, so maybe you want to try to do calculations in the XAML Binding. It doesn’t work.
You can enter this and while it will compile, the Binding won’t work:
Text="{Binding ElementName=slider1, Path=(int)Value}"
You can enter this and while it will compile, the Binding won’t work:
Text="{Binding ElementName=slider1, Path=Value + 1}"
Example 3 – Binding and Element’s property to CheckBox.IsChecked
Ok, lets do a slight more complex example. We are going to have more than two elements. We are going to have a ListBox that contains a list of items (ListBoxItems). We are going to have a TextBox that displays the content of the selected item.
Step 1 – Add the elements
- Add two items from the Toolbox:
TextBoxListBox
- Add multiple items to
listBox1. This can be done either in the XAML or by clicking on the button forItemsin the Properties of thelistBox1.
Step 2 – Adding Binding to the TextBox
- In the XAML, locate the
textBox1element. - Add the following to the
textBox1element:Text="{Binding ElementName=listBox1, Path=SelectedItem.Content}"Notice that we are using a property of a property for the Path. This is allowed.SelectedItemis a property oflistBox1, andContentis a property ofSelectedItem.The XAML now looks like this (only two new lines exist):<Window x:Class="BindingATextBoxToAListBoxSelectedItem.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <TextBox Height="23" Margin="12,23,12,0" Name="textBox1" VerticalAlignment="Top" Text="{Binding ElementName=listBox1, Path=SelectedItem.Content}"/> <ListBox Margin="12,52,12,110" Name="listBox1"> <ListBoxItem>c:</ListBoxItem> <ListBoxItem>d:</ListBoxItem> <ListBoxItem>e:</ListBoxItem> <ListBoxItem>f:</ListBoxItem> <ListBoxItem>g:</ListBoxItem> <ListBoxItem>h:</ListBoxItem> </ListBox> </Grid> </Window> - Compile and run your program.
- Select different items in the list and watch the textBox1 change to display the content of the selected item.
Copyright ® Rhyous.com – Linking to this post is allowed without permission and as many as ten lines of this page can be used along with this link. Any other use of this page is allowed only by permission of Rhyous.com.

Thanks a lot! Very simple and very helpful.