WPF - XAML'ye Genel Bakış

WPF ile çalışırken karşılaşacağınız ilk şeylerden biri XAML'dir. XAML, Genişletilebilir Uygulama Biçimlendirme Dili anlamına gelir. XML tabanlı basit ve bildirimsel bir dildir.

  • XAML'de, hiyerarşik ilişkilere sahip nesnelerin özelliklerini oluşturmak, başlatmak ve ayarlamak çok kolaydır.

  • Esas olarak GUI'leri tasarlamak için kullanılır, ancak başka amaçlar için de kullanılabilir, örneğin Workflow Foundation'da iş akışını bildirmek için.

Temel Sözdizimi

Yeni WPF projenizi oluşturduğunuzda, aşağıda gösterildiği gibi MainWindow.xaml'de varsayılan olarak bazı XAML kodlarıyla karşılaşacaksınız.

<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>

Yukarıdaki XAML dosyası farklı türde bilgiler içerir. Aşağıdaki tablo her bilginin rolünü kısaca açıklamaktadır.

Bilgi Açıklama
<Pencere Kökün açılış nesne öğesi veya kabıdır.
x: Class = "Resources.MainWindow" Bu, işaretlemeyi arkasında tanımlanan kısmi sınıf koduna bağlayan kısmi bir sınıf bildirimidir.
xmlns = "http://schemas.microsoft.com/win fx / 2006 / xaml / sunum" WPF istemcisi / çerçevesi için varsayılan XAML ad alanını eşler
xmlns: x = "http://schemas.microsoft.com/w infx / 2006 / xaml" X: öneki ile eşleyen XAML dili için XAML ad alanı
> Kökün nesne öğesinin sonu

<Grid>

</Grid>

Boş bir ızgara nesnesinin etiketlerini başlatır ve kapatır.
</Window> Nesne elemanının kapatılması

XAML için sözdizimi kuralları neredeyse XML'e benzer. Bir XAML belgesine bakarsanız, bunun aslında geçerli bir XML dosyası olduğunu, ancak bir XML dosyasının mutlaka bir XAML dosyası olmadığını fark edeceksiniz. Bunun nedeni, XML'de özniteliklerin değerinin bir dize olması gerektiğidir ve XAML'de, Özellik öğesi sözdizimi olarak bilinen farklı bir nesne olabilir.

  • Bir Object öğesinin sözdizimi, bir sol açılı ayraç (<) ve ardından bir nesnenin adı ile başlar, örneğin Button.

  • Bu nesne elemanının bazı Özelliklerini ve niteliklerini tanımlayın.

  • Nesne öğesi bir eğik çizgi (/) ve ardından hemen bir dik açılı ayraç (>) ile kapatılmalıdır.

Alt öğesi olmayan basit nesne örneği

<Button/>

Bazı niteliklere sahip nesne öğesi örneği

<Button Content = "Click Me" Height = "30" Width = "60" />

Alternatif bir söz dizimi örneği özellikleri tanımlar (Özellik öğesi sözdizimi)

<Button> 
   <Button.Content>Click Me</Button.Content> 
   <Button.Height>30</Button.Height> 
   <Button.Width>60</Button.Width> 
</Button>

Alt Öğeli Nesne Örneği: StackPanel, alt öğe olarak Textblock'u içerir

<StackPanel Orientation = "Horizontal"> 
   <TextBlock Text = "Hello"/> 
</StackPanel>

Neden WPF'de XAML

XAML, yalnızca WPF'nin en çok bilinen özelliği değil, aynı zamanda en yanlış anlaşılan özelliklerden biridir. WPF'ye maruz kalırsanız, XAML'yi duymuş olmalısınız; ancak XAML hakkında daha az bilinen iki gerçeği not alın -

  • WPF'nin XAML'ye ihtiyacı yok
  • XAML, WPF'ye ihtiyaç duymaz

Aslında bunlar ayrılabilir teknoloji parçalarıdır. Bunun nasıl olabileceğini anlamak için, XAML'de bazı özelliklerle bir butonun oluşturulduğu basit bir örneğe bakalım.

<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>

XAML'yi WPF'de kullanmamayı seçmeniz durumunda, aynı GUI sonucunu yordamsal dil ile de elde edebilirsiniz. Aynı örneğe bir göz atalım ama bu sefer C # 'da bir buton oluşturacağız.

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);  
      } 
   } 
}

XAML kodunu veya C # kodunu derleyip çalıştırdığınızda, aşağıda gösterildiği gibi aynı çıktıyı göreceksiniz.

Yukarıdaki örnekten, nesnelerin özelliklerini oluşturmak, başlatmak ve ayarlamak için XAML'de yapabilecekleriniz, aynı görevlerin kod kullanılarak da yapılabileceği açıktır.

  • XAML, kullanıcı arabirimi öğeleri tasarlamanın başka bir basit ve kolay yoludur.

  • XAML ile bu, UI öğelerini tasarlamak için yapabileceklerinizin tek yol olduğu anlamına gelmez. Nesneleri XAML'de bildirebilir veya kodu kullanarak tanımlayabilirsiniz.

  • XAML isteğe bağlıdır, ancak buna rağmen WPF tasarımının merkezinde yer alır.

  • XAML'in amacı, görsel tasarımcıların doğrudan kullanıcı arabirimi öğeleri oluşturmasını sağlamaktır.

  • WPF, kullanıcı arayüzünün tüm görsel yönlerini işaretlemeden kontrol etmeyi mümkün kılmayı amaçlamaktadır.