Silverlight - XAML'ye Genel Bakış
Silverlight 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şkilerle bir nesnenin özelliklerini oluşturmak, başlatmak ve ayarlamak çok kolaydır.
Esas olarak GUI tasarlamak için kullanılır.
Başka amaçlar için de kullanılabilir, örneğin, bir İş Akışı temelindeki iş akışını bildirmek için.
Temel Sözdizimi
Yeni bir Silverlight projesi oluşturduğunuzda, varsayılan olarak bazı XAML kodunu göreceksiniz. MainPage.xaml Aşağıda gösterildiği gibi.
<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>
Yukarıda verilen XAML dosyasının farklı bilgi türlerinden bahsettiğini görebilirsiniz; hepsi aşağıda verilen tabloda kısaca açıklanmıştır.
Bilgi | Açıklama |
---|---|
<UserControl | Mevcut denetimleri kapsayan ve kendi mantığını sağlayan yeni bir denetimi tanımlamak için temel sınıfı sağlar. |
x: Class = "FirstExample.MainPage" | Bu, işaretlemeyi, içinde tanımlanan, arkadaki kısmi sınıf koduna bağlayan kısmi bir sınıf bildirimidir. |
xmlns = "http://schemas.microsoft.com / winfx / 2006 / xaml / sunum" | Silverlight istemcisi / çerçevesi için varsayılan XAML ad alanını eşler. |
xmlns: x = "http: //schemas.microsoft.c om / winfx / 2006 / xaml" | XAML ad alanı, onu x: önek ile eşleştirir. |
xmlns: d = "http://schemas.microsoft.com / expression / blend / 2008" | XAML ad alanı tasarımcı desteği, özellikle Microsoft Visual Studio ve Microsoft Expression Blend'in XAML tasarım yüzeylerinde tasarımcı desteği için tasarlanmıştır. |
xmlns: mc = "http: //schemas.openxmlforma ts.org/markup-compatibility/2006" | XAML okumak için bir biçimlendirme uyumluluk modunu gösterir ve destekler. |
> | Kökün nesne öğesinin sonu. |
<Grid> </Grid> | Bunlar, boş bir ızgara nesnesinin başlangıç ve kapanış etiketleridir. |
</UserControl> | Nesne elemanının kapatılması. |
XAML için sözdizimi kuralları neredeyse XML'ninkilere benzer. Bir XAML belgesine bakarsanız, aslında bunun geçerli bir XML dosyası olduğunu fark edeceksiniz. Bunun tersi doğru değildir, çünkü XML'de özniteliklerin değeri bir dize olmalıdır, XAML'de ise Özellik öğesi sözdizimi olarak bilinen farklı bir nesne olabilir.
Bir Object öğesinin sözdizimi bir sol açılı ayraç (<) ile başlar ve bunu bir nesnenin adı, örneğin Button ile takip eder.
Bu nesne elemanının özellikleri ve nitelikleri tanımlanmıştır.
Nesne öğesi bir eğik çizgi (/) ve hemen ardından bir dik açılı ayraç (>) ile kapatılmalıdır.
Alt öğesi olmayan basit bir nesne örneği aşağıda gösterilmiştir.
<Button/>
Bazı niteliklere sahip bir nesne öğesi örneği -
<Button Content = "Click Me" Height = "30" Width = "60"/>
Özellikleri tanımlamak için alternatif sözdizimi örneği (Ö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 Silverlight'ta XAML
XAML, başlangıçta Silverlight için icat edilmemiştir. Windows Presentation Foundation olan WPF'den geldi. Silverlight genellikle WPF'nin bir alt kümesi olarak tanımlanır. Silverlight, WPF'nin yapamadığı bazı şeyleri yapabildiğinden, bu kesinlikle doğru değildir. İşlevselliğin çakıştığı yerlerde bile, ikisi ayrıntılarda biraz farklıdır.
WPF ve Silverlight'ın birçok açıdan çok benzer olduğunu söylemek daha doğrudur. Farklılıklara rağmen, Silverlight'ın WPF'den ödünç aldığı XAML özelliğine bakmak hala bilgilendirici. Örneğin Silverlight, bitmapler ve ölçeklenebilir şekiller için grafik temelleri sunar.
Ayrıca, video ve ses işleme için öğeler sağlar.
Basit biçimlendirilmiş metin desteğine sahiptir ve herhangi bir öğeyi canlandırabilirsiniz. WPF'yi biliyorsanız, bu özellik seti size tanıdık gelecektir.
Önemli bir nokta, WPF XAML'i alıp Silverlight'ta kullanamazsınız.
Benzerlikler olsa da, çok sayıda küçük farklılıklar da bulacaksınız.
XAML ve Arkasındaki Kod
XAML, bir kullanıcı arabiriminin görünümünü ve yapısını tanımlar. Bununla birlikte, uygulamanızın kullanıcı onunla etkileşim kurduğunda yararlı bir şey yapmasını istiyorsanız, bazı koda ihtiyacınız olacaktır.
Her XAML dosyası genellikle, arkasındaki kod olarak adlandırdığımız bir kaynak kod dosyasıyla ilişkilendirilir. Çeşitli Microsoft Framework'ler bu terimi kullanır.
Arkadaki kodun genellikle XAML'de tanımlanan öğeleri, kullanıcı girdisi hakkında bilgi almak veya kullanıcıya bilgi göstermek için kullanması gerekir.
Aşağıda verilen XAML kodunda, TextBlock ve Buttontanımlanmıştır. Varsayılan olarak, uygulama çalıştırıldığında bir metin gösterecektir "Hello World!Web sayfasında ”ve bir düğme.
<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>
Arkasındaki kod, adı verilen herhangi bir öğeye erişebilir x:Name direktif.
Adlandırılmış öğeler, arkasındaki koddaki alanlar aracılığıyla kullanılabilir hale gelir ve kodun bu nesnelere ve üyelerine olağan şekilde erişmesine izin verir.
x:Prefix adın normal bir özellik olmadığını belirtir.
x:Name XAML derleyicisine arkadaki kodda bu nesneye erişmek istediğimiz özel bir sinyaldir.
Aşağıda verilen düğme tıklama olay uygulamasıdır. TextBlock metin güncellenir.
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, UI öğelerini tasarlamanın tek yolu değildir. XAML'de nesneleri bildirmek veya bir kodda bildirmek / yazmak size kalmıştır.
XAML isteğe bağlıdır, ancak buna rağmen, Silverlight tasarım.
XAML kodlamasının amacı, görsel tasarımcıların kullanıcı arabirimi öğelerini doğrudan oluşturmasını sağlamaktır. Bu nedenle,Silverlight kullanıcı arayüzünün tüm görsel yönlerini işaretlemeden kontrol etmeyi mümkün kılmayı amaçlamaktadır.