WPF - przegląd XAML
Jedną z pierwszych rzeczy, które napotkasz podczas pracy z WPF, jest XAML. XAML oznacza Extensible Application Markup Language. To prosty i deklaratywny język oparty na XML.
W języku XAML bardzo łatwo jest tworzyć, inicjować i ustawiać właściwości obiektów z relacjami hierarchicznymi.
Służy głównie do projektowania GUI, ale może być również używany do innych celów, np. Do deklarowania przepływu pracy w Workflow Foundation.
Podstawowa składnia
Podczas tworzenia nowego projektu WPF domyślnie napotkasz część kodu XAML w pliku MainWindow.xaml, jak pokazano poniżej.
<Window x:Class = "Resources.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "525">
<Grid>
</Grid>
</Window>
Powyższy plik XAML zawiera różne rodzaje informacji. Poniższa tabela pokrótce wyjaśnia rolę każdej informacji.
Informacja | Opis |
---|---|
<Okno | Jest to otwierający element obiektu lub kontener katalogu głównego. |
x: Class = "Resources.MainWindow" | Jest to deklaracja klasy częściowej, która łączy znacznik z częściowym kodem klasy zdefiniowanym za nią. |
xmlns = "http://schemas.microsoft.com/win fx / 2006 / xaml / prezentacja" | Mapuje domyślną przestrzeń nazw XAML dla klienta / struktury WPF |
xmlns: x = "http://schemas.microsoft.com/w infx / 2006 / xaml" | Przestrzeń nazw XAML dla języka XAML, który mapuje go na prefiks x: |
> | Koniec elementu obiektu głównego |
<Grid> </Grid> |
Jest to uruchamianie i zamykanie znaczników pustego obiektu siatki. |
</Window> | Zamknięcie elementu obiektu |
Reguły składni dla XAML są prawie podobne do XML. Jeśli spojrzysz na dokument XAML, zauważysz, że jest to w rzeczywistości prawidłowy plik XML, ale plik XML niekoniecznie jest plikiem XAML. Dzieje się tak, ponieważ w języku XML wartość atrybutów musi być ciągiem, podczas gdy w języku XAML może to być inny obiekt, który jest znany jako składnia elementu właściwości.
Składnia elementu Object rozpoczyna się od lewego nawiasu trójkątnego (<), po którym następuje nazwa obiektu, np. Przycisk.
Zdefiniuj niektóre 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
<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 WPF
XAML to nie tylko najbardziej znana funkcja WPF, ale także jedna z najbardziej niezrozumiałych funkcji. Jeśli masz kontakt z WPF, to na pewno słyszałeś o XAML; ale zwróć uwagę na dwa mniej znane fakty dotyczące języka XAML -
- WPF nie potrzebuje XAML
- XAML nie potrzebuje WPF
W rzeczywistości są to oddzielne elementy technologii. Aby zrozumieć, jak to może być, spójrzmy na prosty przykład, w którym jest tworzony przycisk z niektórymi właściwościami w języku XAML.
<Window x:Class = "WPFXAMLOverview.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<StackPanel>
<Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"
Margin = "150" VerticalAlignment = "Top" Width = "75" />
</StackPanel>
</Window>
Jeśli zdecydujesz się nie używać XAML w WPF, możesz osiągnąć ten sam wynik GUI również z językiem proceduralnym. Spójrzmy na ten sam przykład, ale tym razem utworzymy przycisk w C #.
using System.Windows;
using System.Windows.Controls;
namespace WPFXAMLOverview {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
// Create the StackPanel
StackPanel stackPanel = new StackPanel();
this.Content = stackPanel;
// Create the Button
Button button = new Button();
button.Content = "Click Me";
button.HorizontalAlignment = HorizontalAlignment.Left;
button.Margin = new Thickness(150);
button.VerticalAlignment = VerticalAlignment.Top;
button.Width = 75;
stackPanel.Children.Add(button);
}
}
}
Podczas kompilowania i wykonywania kodu XAML lub kodu C # zobaczysz te same dane wyjściowe, jak pokazano poniżej.
Z powyższego przykładu jasno wynika, że to, co można zrobić w języku XAML, aby utworzyć, zainicjować i ustawić właściwości obiektów, te same zadania można również wykonać za pomocą kodu.
XAML to kolejny prosty i łatwy sposób projektowania elementów interfejsu użytkownika.
W przypadku języka XAML nie oznacza to, że jedyną możliwością jest zaprojektowanie elementów interfejsu użytkownika. Możesz zadeklarować obiekty w XAML lub zdefiniować je przy użyciu kodu.
XAML jest opcjonalny, ale mimo to stanowi podstawę projektowania WPF.
Celem języka XAML jest umożliwienie projektantom wizualnym bezpośredniego tworzenia elementów interfejsu użytkownika.
WPF ma na celu umożliwienie kontrolowania wszystkich wizualnych aspektów interfejsu użytkownika z poziomu znacznika.