65.9K
CodeProject is changing. Read more.
Home

Different ways to bind a data in Codebind from XAML

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:
<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:
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:
<ListBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type loc:Window1}}, Path=CollectionOfString}" />
Here "loc" is the namespace of Window1 class. Way 2:
<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.