eXtensible Application Markup Language (XAML, wym. /ˈzæməl/[1]) – język opisu interfejsu użytkownika wykorzystywany m.in. w technologii Windows Presentation Foundation (w skrócie WPF), która jest elementem platformy .NET Framework począwszy od wersji 3.0.

XAML jest językiem opartym na języku XML zoptymalizowanym do opisu bogatych, wizualnych interfejsów, takich jak tworzone w Adobe Flash. SVG, LZX czy XUL są przykładami podobnych języków interfejsu użytkownika rozprowadzonymi na warunkach wolnego oprogramowania.

Pliki XAML zazwyczaj tworzone są ręcznie lub przy pomocy wizualnych narzędzi, takich jak Microsoft Expression Studio. Wynikowy kod XML interpretowany jest w locie przez podsystem systemu operacyjnego odpowiedzialny za wyświetlanie danych, co zastępuje GDI z poprzednich wersji Windows. Elementy XAML mapowane są do obiektów Common Language Runtime. Atrybuty mapowane są do właściwości lub zdarzeń tych obiektów.

XAML został stworzony w celu zapewnienia wsparcia klasom i metodom w architekturze .NET, które zajmują się obsługą interakcji z użytkownikiem, zwłaszcza wyświetlaniem. Język ten może być wykorzystywany jako język opisu nie tylko technologii Windows Presentation Foundation, lecz także innych, jak np. Windows Workflow Foundation.

Akronim XAML pierwotnie rozwijany był jako eXtensible Avalon Markup Language, gdzie Avalon było nazwą kodową dla biblioteki .NET.

Okrojona wersja Windows Presentation Foundation, pozwalająca tworzyć aplikacje internetowe, jest wykorzystywana w Silverlight.

Historia

Początki języka XAML sięgają roku 2003. Akronim XAML początkowo rozwijał się do nazwy Extensible Avalon Markup Language, gdzie Avalon to pierwotna nazwa Windows Presentation Foundation. Avalon wprowadził język XAML w celu umożliwienia mapowania języka na obiekty graficzne i połączenia pracy programistów i grafików w jednym miejscu. W roku 2006 w momencie wydania Windows Presentation Foundation w wersji 3.0 język XAML został rozszerzony o data binding, kontrolki czy wzorzec MVVM. W 2007 roku wraz z pojawieniem się wersji 1.0 Silverlight język XAML był używany do budowania interfejsu użytkownika, jednak tworzone projekty nie używały WPF. Wraz z rozwojem WPF rozszerzane były możliwości języka XAML. W wersji 3.5 wprowadzone zostały animacje oraz elementy 3D. WPF 4.0 z roku 2010 wprowadza między innymi nowe kontrolki takie jak: DataGrid, Calendar, DatePicker oraz wsparcie dla dotyku. Wraz z wypuszczeniem wersji 4.5 wprowadzona została możliwość wiązania do statycznych właściwości, asynchroniczna walidacja danych przy użyciu INotifyDataErrorInfo, nowe metody dla klasy Dispachter. Window 8.1 XAML wprowadza nowe zmiany: nowe kontrolki oraz nowe API. W tym samym czasie rozwijał się Silverlight. W roku 2009 wraz z pojawieniem się wersji 2.0 rozszerzona została liczba kontrolek, a wersja 3.0 z roku 2009 poza dodatkowymi kontrolkami (DataGrid, TreeView) umożliwiała tworzenie aplikacje, które mogły być uruchamiane w osobnym oknie poza przeglądarką. Wersja 4.0 z roku 2010 między innymi wspierała przeglądarkę Google Chrome, ulepszyła wsparcie obsługi myszki, czy możliwość przeciągnij i upuść.

Wersje i różnice między nimi

Istnieją 4 główne implementacje języka XAML:

Różnice między wersjami pojawiają się na etapie analizowania. Dodatkowo wersja 4 Silverlight nie jest w pełni kompatybilna wstecz, oznacza to, że niektóre pliki akceptowane przez wersje 3 będą inaczej interpretowane przez wersję 4.

Cele i technologie

Język XAML jest używany w celu tworzenie elementów interfejsu użytkownika. Język ten umożliwia rozdzielenie definicji interfejsu od kodu logicznego, który często znajduje się w plikach code-behind. XAML daje możliwość wspólnej pracy, gdzie rozgraniczona jest praca nad interfejsem i nad logiką.

W przypadku użycia XAML w WPF możliwe jest definiowanie grafiki zarówno 2D, jak i 3D, animacji oraz wielu innych efektów.

Jeżeli zaś XAML używany jest dla Windows Workflow Foundation to w celu opisywania potencjalnie długiej logiki (np. narzędzia modelowania procesów). Początkowo format ten był określany jako XOML, w celu zaznaczenia różnicy pomiędzy nim a XAML, jednak dzisiaj nie jest już to praktykowane, jednak rozszerzenie plików to.xoml.

Pliki XAML mogą być kompilowane w pliki.BAML, które mogą zostać umieszczanie w zasobach i w czasie rzeczywistym tłumaczone, czego wynikiem jest odpowiadający interfejs np. w WPF.

Przykłady

<Grid>
        <Button Background="Blue" Content="Hello World" Click="Button_Click"/>
        <TextBox TextWrapping="Wrap" Text="Hello XAML"/>
</Grid>

W tym przypadku zostanie wyświetlony niebieski przycisk z napisem Hello World, a po kliknięciu zostanie wywołane zdarzenie Button_Click (zaimplementowane w tzw. Code-behind) oraz pole tekstowe z napisem Hello XAML.

W przypadku pracy z MVVM możemy zawartość kontrolek czy wywoływane zdarzenia wiązać z właściwościami czy metodami zaimplementowanymi w View Modelu. Aby było to możliwe, należy podać źródło naszych właściwości czy metod:

<DataContext="{Binding Category, Source={StaticResource Locator}}">

Oznacza to, że wszystkie właściwości będą pochodzić z ViewModelu nazwane przez nas jako Category. Nazwania dokonaliśmy w miejscu Locator, które jest klasą gromadzącą wszystkie ViewModele:

public CategoryViewModel Category
        {
            get { return ServiceLocator.Current.GetInstance<CategoryViewModel>(); }
        }

dzięki temu można odwoływać się do właściwości czy metod z tej klasy:

<TextBox Text="{Binding Filling}"/>
<Button Command="{Binding SaveToXmlCommand}"/>

Zobacz też

Przypisy

  1. VTC – QuickStart Microsoft .NET Framework 3.5 [2009].

Linki zewnętrzne

  • Omówienie XAML (ang.)

Witaj

Uczę się języka hebrajskiego. Tutaj go sobie utrwalam.

Źródło

Zawartość tej strony pochodzi stąd.

Odsyłacze

Generator Margonem

Podziel się