LogicSoft.com.pl - systemy informatyczne

Data Binding - czyli bindowanie danych w XAML

Uwaga, otwiera nowe okno. PDFDrukujEmail

Celem tego artykułu jest przedstawienie mechanizmu bindowania danych (data binding) w WPF przy użyciu języka opisu interfejsu - XAML. Zaprezentowanie zostanie podpinanie danych znajdujących się w kolekcji do kontrolki typu ListView używając minimalnej ilości kodu języka C#.

W klasycznym wykonaniu, czyli np: w WinForms dane były definiowane i podpiane do kontrolek w następujący sposób.

//Klasyczny model podpinania danych
dane = bazaDanych.PobierzDane();

//Klasyczny model podpinania danych
JakasKontrolka.Text = dane.JakasWlasciwosc;

Istnieje również możliwość podawania np: do kontrolki DataGrid tabel z ADO.NET, jednak powstają przy tym dodatkowe ilości zbędnego kodu. W WPF ten sposób jest znacznie ułatwiony za pomocą data binding. Poniżej przedstawie prosty przykład, który ukaże sposób działania tego mechanizmu.

//Definicja klasy
public class Person
{
private string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
private string _surname;
public string Surname
{
get
{
return _surname;
}
set
{
_surname = value;
}
}
private int _age;
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
public Person(string imie, string nazwisko, int wiek)
{
_name = imie;
_surname = nazwisko;
_age = wiek;
}
}

Klasa ta pomoże w poprawnym zaprezentowaniu bindowania danych. Kolejnym krokiem jest dodanie odpowiedniego kodu XAML.




]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>

Kod ten w oknie Windows stworzy panel z przyciskiem, oraz listą typu ListView, która posłuży nam do wyświetlania danych. Dodatkowo, aby w pełni zaprezentować sposób bindowania danych dodam obsługe zdarzenia Click przycisku btnKlik.

private void btnKlik_Click(object sender, RoutedEventArgs e)
{
List listaLudzi = new List();
listaLudzi.Add(new Person("Mateusz", "Pustelak", 23));
listaLudzi.Add(new Person("Jan", "Kowalski", 75));
listaLudzi.Add(new Person("Tomasz", "Szostak", 22));
listaLudzi.Add(new Person("Mała", "Mi", 12));
listaOsob.ItemsSource = listaLudzi;
}

Powyższy kod nie robi nic innego, jak tylko tworzy liste obiektów klasy Person, która następnie zostaje zbindowana do kontrolki ListView o nazwie listaOsob. W tym momencie XAML "wyciągnie" odpowiednie właściwości z obiektów (czyli Name, Surname i Age) i przypisze je do odpowiednich kolumn.
Na poniższym zrzucie ekranu można zobaczyć efekt działania programu.

W razie jakichkolwiek pytań, zapraszam do działu kontakt.