XAML
“Zamel ”olarak okunan XAML `ın, açılımı Extensible Application Markup Language `tır.
Kısaca şöyle diyebiliriz : uygulama arayüzlerinin oluşturulmasını sağlayan Microsoft`un yeni tanımlama dili.
XAML, geliştiricilere XML kullanarak tüm .NET kullanıcı arayüz elemenlarının (buton, textbox a€¦ gibi) layoutlarını kontrol edebilme yeteneği sağlar.
Her XAML etiketi (tag) , doğrudan özellikleri XML attributeleriyle kontrol edilen bir .NET Framework sınıfına karşılık gelir.
Örneğin elemanını ele alalım. tag`i doğrudan System.Windows.Controls.Button sınıfına karşılık gelir.
Read-only olan özellikler(Properties) XAML tarafından erişilemez; sadece public, get ve set methodları olan özellikler XAML ile erişilerbilirdir.
Event`ler ve handlerlar da XAML attributeleri ile belirtilebilir, ve event`in gerçekleşmesi sonucu çalışacak kod da code behind tarafına C# ya da tercihe göre VB.NET ile yazılabilir.Nasıl ki ASP.NET`te kodu ister codebehind sayfasına ya da aspx sayfasına yazıyorduk, aynı şekilde burda da ister codebehind tarafına ya da XMAL dosyasına yazabiliyoruz.
XAML sayfasına kodu gömerseniz, çalıştırmak için once uygulamayı derlemelisiz. Fakat XAML sayfasına kod yazmadıysanız, XAML dosyasına çift tıklayarak Vista üzerinde doğrudan görebilirsiniz(Aynı html sayfaları gibi).
Windows XP`de ise görebilmeniz yada browser`a yükleyebilmeniz için XAML sayfalarını once derlemeniz gerekir.
XAML Ağaç modeli
Nasıl ki HTML nesneleri DOM ağaçını oluşturmak için pars edilirse, XAML elemanlarıda ElementTree ağaçını oluşturmak için pars edilir.
XAML`in nesneye dayalı methodolojiye dayandığını söyleyebiliriz. Şöyleki, bir XAML elemenından türetilen başka bir eleman parentının özelliklerini alır. XAML`den tam anlamıyla faydalanabilmek için kalıtımın doğasını anlamak gerekir.Custom controller alt sınıflar oluşturularak kullanıcı arayzü tasarımında kullanılmak üzere XAML geliştiricilerine sunulabilir.
XAML, WPF tarafında tanımlanan nesnelerin XML görünümü olduğu için, XAML elemenları object-oriented programlama tekniklerini kullanan geliştiriciler tarafından genişletilebilir.
XAML, bir programlama dili değildir ve uygulama çalıştırmak için tasarlanmamıştır.
XAML dosyaları uygulamalar için kullanıcı arayüz tanımları içerir. Uygulama mantığı ve event handler`lar codebehind sayfalarında bulunur.
Uygulama ve Sayfa tanımı
Uygulama tanımı (application definition) is kendi dosyasını içinde tanımlanır. Set edilmesi gereken iki özelliği vardır, namespace ve startup URI, URI uygulama çalıştığında yüklenmesi gereken ilk sayfayı belirtir.
XAML eleman tanımında, ya her eleman için için bir namespace`e referans verirsiniz yada Avalon namespace`ini root elemanın referansı olarak belirtirsiniz.
Every XAML element requires either explicit references to the namespace on a per-element basis or the declaration of the Avalon namespace as the default of the root element.
Root tanımı
Herhangi bir XAML dosyasında tanımlanan ilk eleman root elemanıdır.Root elemanı mutlaka tanımlandığı namespace referans içermelidir.
Root elemanlar diğer XAML elemanlarını içeren konteynerlardır. Uygulama tanımı (application definition) için en yaygın kök (root) eleman NavigationWindow`dur. Window elemanı oldukça az kullanılmaktadır.
Sayfa tanımı(page definition) için ise en yaygın kök eleman Panel ve onun alt sınıfı olan DockPanel ve StackPanel elemanları ve de Page elemanıdır.
İki çeşit XAML uygulaması vardır: doğrudan çalışan (express) ve kurulan (installed).
Express applications(yani doğrudan çalışan) are bir web browserda çalışır. Installed applications(kurulan) ise bildiğimiz geleneksel masa üstü uygulamalarıdır.
Tüm XAML attribute`leri (özellikleri) kod tarafında düzenlenebilir. Zaten bu attribute`ler, CLR sınıf attributelerinin XML görünümleridir. Yani, geleneksel Windows uygulamalarında olduğu gibi bir butonun arkaplan rengini, yüksekliğini, ya da posizyonunu kod içinden de kolayca değiştirebilirsiniz.
XAML dosyalarında da elemanını belirterek kod barındırabilirsiniz. Yalnız tüm kod [1]]> elemanı(tag) içine yazılmalıdır. [2]]> elemanı, parserın bu eleman içindeki kod satırlarını yorumlamasını engeller.
void ButtonClickedHandler(object sender, RoutedEventArgs eventArgs)
{
MyButton.Width = 100 ;
MyButton.Content = "Thank you! ";
}
]]>
Kaynaklar Vikipedi