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.