Extensible Application Markup Language: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m int., odstępy
Dodana historia XAML, rozszerzone przykłady.
Linia 11: Linia 11:
Okrojona wersja [[Windows Presentation Foundation]], pozwalająca tworzyć aplikacje internetowe, jest wykorzystywana w [[Microsoft Silverlight|Silverlight]].
Okrojona wersja [[Windows Presentation Foundation]], pozwalająca tworzyć aplikacje internetowe, jest wykorzystywana w [[Microsoft Silverlight|Silverlight]].


==Przykład==
==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|Windows Presentation Foundation]]. [[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|Windows Presentation Foundation]] w wersji 3.0 język XAML został rozszerzony o [[Data Binding|data binding ]], kontrolki czy wzorzec [[Model-View-Controller|MVVM]]. W 2007 roku wraz z pojawieniem się wersji 1.0 [[Microsoft Silverlight|Silverlight]] język XAML był używany do budowania [[Interfejs graficzny|interfejsu użytkownika]], jednak tworzone projekty nie używały [[Windows Presentation Foundation|WPF]]. Wraz z rozwojem [[Windows Presentation Foundation|WPF]] rozszerzane były możliwości języka XAML. W wersji 3.5 wprowadzone zostały animacje oraz elementy 3D. [[Windows Presentation Foundation|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ść [[Data Binding|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 [[Application Programming Interface|API]]. W tym samym czasie rozwijał się [[Microsoft Silverlight|Silverlight]]. W roku 2009 wraz z pojawieniem się wersji 2.0 rozszerzona została ilość 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ądarka internetowa|przeglądarką]]. Wersja 4.0 z roku 2010 między innymi wspierała przeglądarkę [[Google Chrome|Google Chrome]], ulepszyła wsparcie obsługi myszki czy możliwość [[Przeciągnij i upuść|przeciągnij i upuść]].

==Wersje i różnice między nimi==
Istnieją 4 główne implementacje języka XAML:
* [[Windows Presentation Foundation|Windows Presentation Foundation]], który jest używane dla [[.NET Framework|.NET Framework]] zaczynając od wersji 3.0
* [[Microsoft Silverlight|Silverlight 3]]
* [[Microsoft Silverlight|Silverlight 4]]
* Windows 8 XAML / Jupiter

Różnice między wersjami pojawiają się na etapie analizowania. Dodatkowo wersja 4 Silverlight nie jest w pełni [[Kompatybilność wsteczna|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 [[Interfejs graficzny|interfejsu użytkownika]]. Język ten umożliwia rozdzielenie definicji [[Interfejs graficzny|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 [[Interfejs graficzny|interfejsem]] i nad logiką.
W przypadku użycia XAML w [[Windows Presentation Foundation|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|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 [[Windows Presentation Foundation|WPF]].

==Przykłady==
<source lang=XML>
<Grid>
<Button Background="Blue" Content="Hello World" Click="Button_Click"/>
<TextBox TextWrapping="Wrap" Text="Hello XAML"/>
</Grid>
</source>
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 [[Model-View-Controller|MVVM]] możemy zawartość kontrolek czy wywoływane zdarzenia wiązać z właściwościami czy metodami zaimplementowanymi w [[Model-View-Controller|View Modelu]]. Aby było to możliwe należy podać źródło naszych właściwości czy metod:

<source lang=XML>
<DataContext="{Binding Category, Source={StaticResource Locator}}">
</source>

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

<source lang="csharp">
public CategoryViewModel Category
{
get { return ServiceLocator.Current.GetInstance<CategoryViewModel>(); }
}
</source>

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

<source lang=XML>
<source lang=XML>
<TextBox Text="{Binding Filling}"/>
<Window x:Class="Program" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Hello World!">
<Button Command="{Binding SaveToXmlCommand}"/>
<Grid>
<Rectangle Fill="Red" Height="50" Width="50" Margin="10,10,700,444"></Rectangle>
<Button Content="Przycisk" HorizontalAlignment="Left" Margin="65,10,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>
</source>
</source>
Spowoduje on wyświetlenie okna zawierającego czerwony kwadrat i przycisk.


== Zobacz też ==
== Zobacz też ==
Linia 28: Linia 69:
* [http://msdn2.microsoft.com/en-us/library/ms752059.aspx Omówienie XAML (ang.)]
* [http://msdn2.microsoft.com/en-us/library/ms752059.aspx Omówienie XAML (ang.)]
* Artykuł ''[http://m.zdnet.com.au/mozilla-gnome-mull-united-front-against-longhorn-139146163.htm Mozilla, Gnome mull united front against Longhorn]'' (ZDNET)
* Artykuł ''[http://m.zdnet.com.au/mozilla-gnome-mull-united-front-against-longhorn-139146163.htm Mozilla, Gnome mull united front against Longhorn]'' (ZDNET)
* [http://www.microsoftvirtualacademy.com/training-courses/xaml-deep-dive-for-windows-windows-phone-apps-jump-start Kurs z podstaw XAML]
* [http://www.microsoftvirtualacademy.com/training-courses/designing-your-xaml-ui-with-blend-jump-start Kurs z XAML z użyciem Blend]
{{Przypisy}}
{{Przypisy}}



Wersja z 14:51, 5 paź 2014

XAML (ang. eXtensible Application Markup Language, wym. /ˈzæməl/[1]) jest językiem opisu interfejsu użytkownika wykorzystywanym 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 (ten ostatni używany jest między innymi do budowy rozszerzeń dla Firefoksa) 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 ilość 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żemy odwoływać się do właściwości czy metod z tej klasy:

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

Zobacz też

Linki zewnętrzne

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