Silverlight - przegląd XAML
Jedną z pierwszych rzeczy, które napotkasz podczas pracy z Silverlight, jest XAML. XAML oznacza rozszerzalny język znaczników aplikacji. Jest to prosty i deklaratywny język oparty na XML.
W języku XAML bardzo łatwo jest tworzyć, inicjować i ustawiać właściwości obiektu z relacjami hierarchicznymi.
Służy głównie do projektowania GUI.
Może być również używany do innych celów, na przykład do deklarowania przepływu pracy w fundamencie przepływu pracy.
Podstawowa składnia
Podczas tworzenia nowego projektu Silverlight zobaczysz domyślnie część kodu XAML w MainPage.xaml jak pokazano niżej.
<UserControl x:Class = "FirstExample.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d"
d:DesignHeight = "300" d:DesignWidth = "400">
<Grid x:Name = "LayoutRoot" Background = "White">
</Grid>
</UserControl>
Jak widać, podany powyżej plik XAML wspomina o różnych rodzajach informacji; wszystkie z nich zostały pokrótce opisane w poniższej tabeli.
Informacja | Opis |
---|---|
<Kontrola użytkownika | Udostępnia klasę bazową do definiowania nowej kontrolki, która hermetyzuje istniejące kontrolki i udostępnia własną logikę. |
x: Class = "FirstExample.MainPage" | Jest to deklaracja klasy częściowej, która łączy znacznik z tym kodem częściowej klasy za, zdefiniowanym w niej. |
xmlns = "http://schemas.microsoft.com / winfx / 2006 / xaml / prezentacja" | Mapuje domyślną przestrzeń nazw XAML dla klienta / struktury Silverlight. |
xmlns: x = "http: //schemas.microsoft.c om / winfx / 2006 / xaml" | Przestrzeń nazw XAML dla języka XAML, która mapuje ją na prefiks x:. |
xmlns: d = "http://schemas.microsoft.com / expression / blend / 2008" | Przestrzeń nazw XAML jest przeznaczona do obsługi projektantów, w szczególności do obsługi projektantów w powierzchniach projektowych XAML programów Microsoft Visual Studio i Microsoft Expression Blend. |
xmlns: mc = "http: //schemas.openxmlforma ts.org/markup-compatibility/2006" | Wskazuje i obsługuje tryb zgodności znaczników do odczytywania kodu XAML. |
> | Koniec elementu obiektu głównego. |
<Grid> </Grid> | Są to początkowe i zamykające znaczniki pustego obiektu siatki. |
</UserControl> | Zamknięcie elementu obiektu. |
Reguły składni XAML są prawie podobne do reguł XML. Jeśli spojrzysz na dokument XAML, zauważysz, że w rzeczywistości jest to prawidłowy plik XML. I odwrotnie, nie jest prawdą, ponieważ w XML wartość atrybutów musi być ciągiem, podczas gdy w XAML może to być inny obiekt, który jest znany jako składnia elementu właściwości.
Składnia elementu Object zaczyna się od lewego nawiasu trójkątnego (<), po którym następuje nazwa obiektu, np. Przycisk.
Zdefiniowane są właściwości i atrybuty tego elementu obiektu.
Element Object musi być zamknięty ukośnikiem (/), po którym bezpośrednio następuje prawy nawias ostry (>).
Przykład prostego obiektu bez elementu potomnego pokazano poniżej.
<Button/>
Przykład elementu obiektu z pewnymi atrybutami -
<Button Content = "Click Me" Height = "30" Width = "60"/>
Przykład alternatywnej składni do definiowania właściwości (składnia elementu właściwości) -
<Button>
<Button.Content>Click Me</Button.Content>
<Button.Height>30</Button.Height>
<Button.Width>60</Button.Width>
</Button>
Przykład obiektu z elementem podrzędnym: StackPanel zawiera Textblock jako element podrzędny.
<StackPanel Orientation = "Horizontal">
<TextBlock Text = "Hello"/>
</StackPanel/>
Dlaczego XAML w Silverlight
XAML nie został pierwotnie wynaleziony dla Silverlight. Pochodzi z WPF, Windows Presentation Foundation. Silverlight jest często opisywany jako podzbiór WPF. Nie jest to do końca prawdą, ponieważ Silverlight może robić pewne rzeczy, których WPF nie może. Nawet tam, gdzie funkcjonalność się pokrywa, szczegóły różnią się nieco.
Dokładniej można powiedzieć, że WPF i Silverlight są bardzo podobne pod wieloma względami. Pomimo różnic nadal warto przyjrzeć się funkcji XAML, którą Silverlight pożyczył z WPF. Na przykład Silverlight oferuje podstawowe elementy graficzne dla map bitowych i skalowalnych kształtów.
Zawiera również elementy do renderowania wideo i audio.
Ma prostą obsługę sformatowanego tekstu i możesz animować dowolny element. Jeśli znasz WPF, ten zestaw funkcji będzie Ci znany.
Jedna ważna kwestia, nie można wziąć WPF XAML i używać go w Silverlight.
Chociaż istnieją podobieństwa, znajdziesz również wiele małych różnic.
XAML i kod w tle
XAML definiuje wygląd i strukturę interfejsu użytkownika. Jeśli jednak chcesz, aby Twoja aplikacja robiła coś pożytecznego, gdy użytkownik wchodzi z nią w interakcję, będziesz potrzebować trochę kodu.
Każdy plik XAML jest zwykle skojarzony z plikiem kodu źródłowego, do którego odwołujemy się jako do kodu. Ten termin jest używany w różnych strukturach Microsoft.
Kod znajdujący się za nim zwykle będzie wymagał użycia elementów zdefiniowanych w XAML, aby pobrać informacje o danych wejściowych użytkownika lub wyświetlić informacje użytkownikowi.
W podanym poniżej kodzie XAML TextBlock i Buttonsą określone. Domyślnie, gdy aplikacja jest uruchomiona, wyświetli się tekst „Hello World!”Na stronie internetowej i na przycisku.
<UserControl x:Class = "FirstExample.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d"
d:DesignHeight = "300" d:DesignWidth = "400">
<Grid x:Name = "LayoutRoot" Background = "White">
<StackPanel>
<TextBlock x:Name = "TextMessage"
Text = "Hello World!"
Margin = "5">
</TextBlock>
<Button x:Name = "ClickMe"
Click = "ClickMe_Click"
Content = "Click Me!"
Margin = "5">
</Button>
</StackPanel>
</Grid>
</UserControl>
Kod znajdujący się za nim może uzyskać dostęp do dowolnego elementu o nazwie x:Name dyrektywa.
Nazwane elementy stają się dostępne za pośrednictwem pól w kodzie znajdującym się za nimi, umożliwiając kodowi dostęp do tych obiektów i ich elementów członkowskich w zwykły sposób.
Plik x:Prefix oznacza, że nazwa nie jest normalną właściwością.
x:Name jest specjalnym sygnałem dla kompilatora XAML, że chcemy mieć dostęp do tego obiektu w kodzie za nim.
Poniżej podano implementację zdarzenia kliknięcia przycisku, w którym TextBlock tekst jest aktualizowany.
using System.Windows;
using System.Windows.Controls;
namespace FirstExample {
public partial class MainPage : UserControl {
public MainPage() {
InitializeComponent();
}
private void ClickMe_Click(object sender, RoutedEventArgs e) {
TextMessage.Text = "Congratulations! you have created your first Silverlight Applicatoin";
}
}
}
XAML to nie jedyny sposób projektowania elementów interfejsu użytkownika. Zadeklarowanie obiektów w języku XAML lub zadeklarowanie / zapisanie w kodzie należy do Ciebie.
XAML jest opcjonalny, ale mimo to jest sercem Silverlight projekt.
Celem kodowania XAML jest umożliwienie projektantom wizualnym bezpośredniego tworzenia elementów interfejsu użytkownika. W związku z tym,Silverlight ma na celu umożliwienie kontroli wszystkich wizualnych aspektów interfejsu użytkownika z poziomu znacznika.