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.