Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Different ways to bind a data in Codebind from XAML

0.00/5 (No votes)
7 Jan 2011 1  
Databinding Concept in WPF
I see many questions in "Question & Answers" section regarding the data binding issue in WPF. And when I see the question, they miss a very simple thing.

This is a tip to help them out. And basically for beginners who are trying to learn the data binding concepts.

The sample, I provide here is:
- WPF Application
- C# Language

Create a WPF Application from your Visual Studio. Place a ListBox.

XAML:

XML
<Window x:Class="WpfApplication2.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:loc="clr-namespace:WpfApplication2"
        Title="Window1" Height="300" Width="300"
        x:Name="windowObject">
    <Grid>
        <ListBox  />
    </Grid>
</Window>


Add a simple Property in the codebehind of Window1 as CollectionOfString which is nothing but List<string>. Add few items into the CollectionOfString for our DataBinding example.

CS:

C#
using System.Collections.Generic;
using System.Windows;
namespace WpfApplication2
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            this.CollectionOfString = new List<string>();
            this.CollectionOfString.Add("Apple");
            this.CollectionOfString.Add("Banana");
            this.CollectionOfString.Add("Custard Apple");
            InitializeComponent();
        }
        public List<string> CollectionOfString
        {
            get;
            set;
        }
    }
}


Now go to the designer/XAML window. You simply set binding of the CollectionOfString in two ways like below:

Way 1:

XML
<ListBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type loc:Window1}}, Path=CollectionOfString}" />


Here "loc" is the namespace of Window1 class.

Way 2:

XML
<ListBox ItemsSource="{Binding ElementName=windowObject, Path=CollectionOfString}"/>


Here "windowObject" is the name of the Window.

Let me know if you have any questions.

I hope it is helpful.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here