Data Binding - czyli bindowanie danych w XAML
Dodany: 09:39, środa, 15 grudnia 2010
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.
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.
public class Person
{
public string Name
{
{
set
{
private string _surname;
public string Surname
{
{
set
{
private int _age;
public int Age
{
{
set
{
public Person(string imie, string nazwisko, int wiek)
{
_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.
{
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.



