Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede Windows Çalışma Zamanı uygulaması geliştirici kitlesine XAML dili ve XAML kavramları tanıtılır ve Windows Çalışma Zamanı uygulaması oluşturmak için kullanıldığından XAML'de nesneleri bildirmenin ve öznitelikleri ayarlamanın farklı yolları açıklanır.
XAML nedir?
Genişletilebilir Uygulama biçimlendirme dili (XAML), bildirim temelli bir dildir. Özellikle XAML, birden çok nesne arasındaki hiyerarşik ilişkileri ve türlerin uzantısını destekleyen bir destek türü kuralını gösteren bir dil yapısı kullanarak nesneleri başlatabilir ve nesnelerin özelliklerini ayarlayabilir. Bildirim temelli XAML işaretlemesinde görünür ui öğeleri oluşturabilirsiniz. Ardından her XAML dosyası için olaylara yanıt verebilen ve ilk olarak XAML'de bildirdiğiniz nesneleri işleyebilen ayrı bir arka planda kod dosyası ilişkilendirebilirsiniz.
XAML dili, tasarım araçlarıyla etkileşimli geliştirme ortamı (IDE) arasında veya birincil geliştiricilerle yerelleştirme geliştiricileri arasında XAML kaynaklarının değişimi gibi geliştirme sürecindeki farklı araçlar ve roller arasında kaynak değişimini destekler. XAML değişim formatı olarak kullanılarak tasarımcı ve geliştirici rolleri ayrı tutulabilir veya bir araya getirilebilir, ve tasarımcılar ve geliştiriciler bir uygulamanın üretimi sırasında tekrarlayarak çalışabilir.
Bunları Windows Çalışma Zamanı uygulama projelerinizin bir parçası olarak gördüğünüzde, XAML dosyaları .xaml dosya adı uzantısına sahip XML dosyalarıdır.
Temel XAML söz dizimi
XAML, XML üzerine temellendiren temel bir sözdizimine sahiptir. Tanım gereği geçerli XAML de geçerli XML olmalıdır. Ancak XAML, XML 1.0 belirtimine göre XML'de geçerli olmaya devam eden ve farklı, daha eksiksiz bir anlam atanmış söz dizimi kavramlarına da sahiptir. Örneğin, XAML özellik öğesi söz dizimini destekler; burada özellik değerleri özniteliklerdeki dize değerleri veya içerik olarak değil öğeler içinde ayarlanabilir. Normal XML için, XAML özellik öğesi adında nokta bulunan bir öğedir, bu nedenle düz XML için geçerlidir ancak aynı anlama sahip değildir.
XAML ve Visual Studio
Microsoft Visual Studio, hem XAML metin düzenleyicisinde hem de daha grafik odaklı XAML tasarım yüzeyinde geçerli XAML söz dizimi oluşturmanıza yardımcı olur. Visual Studio kullanarak uygulamanız için XAML yazarken, her tuş vuruşu için söz dizimi konusunda çok fazla endişelenmeyin. IDE, otomatik tamamlama ipuçları sağlayarak, Microsoft IntelliSense listelerinde ve açılan listelerinde öneriler göstererek, Araç Kutusu penceresinde ui öğesi kitaplıklarını veya diğer teknikleri göstererek geçerli XAML söz dizimini teşvik eder. XAML ile ilk deneyiminiz buysa, söz dizimi kurallarını ve özellikle de başvuruda veya diğer konularda XAML söz dizimini açıklarken kısıtlamaları veya seçenekleri açıklamak için bazen kullanılan terminolojiyi bilmek yararlı olabilir. XAML söz diziminin ince noktaları ayrı bir konu başlığı altında ele alınmıştır: XAML söz dizimi kılavuzu.
XAML ad alanları
Genel programlamada ad alanı, programlama varlıkları için tanımlayıcıların nasıl yorumlandığını belirleyen bir düzenleme kavramıdır. Programlama çerçevesi, ad alanlarını kullanarak kullanıcı tarafından bildirilen tanımlayıcıları çerçeve tarafından bildirilen tanımlayıcılardan ayırabilir, ad alanı nitelikleri aracılığıyla tanımlayıcıları birbirinden ayırabilir, kapsam belirleme adları için kurallar uygulayabilir vb. XAML, XAML dili için bu amaca hizmet eden kendi XAML ad alanı kavramına sahiptir. XAML, XML dili ad alanı kavramlarını şu şekilde uygular ve genişletir:
- XAML, ad alanı bildirimleri için ayrılmış XML öznitelik xmln'lerini kullanır. özniteliğinin değeri genellikle XML'den devralınan bir kural olan Tekdüzen Kaynak Tanımlayıcısı 'dır (URI).
- XAML, varsayılan olmayan ad alanlarını bildirmek için bildirimlerde ön ekleri kullanır ve öğe ve özniteliklerdeki ön ek kullanımları bu ad alanına başvurur.
- XAML, bir kullanım veya bildirimde ön ek olmadığında kullanılan ad alanı olan varsayılan ad alanı kavramına sahiptir. Varsayılan ad alanı her XAML programlama çerçevesi için farklı şekilde tanımlanabilir.
- Ad alanı tanımları bir XAML dosyasında veya yapısında üst öğeden alt öğeye kalıtılır. Örneğin, bir XAML dosyasının kök öğesinde bir ad alanı tanımlarsanız, bu dosyadaki tüm öğeler bu ad alanı tanımını devralır. Sayfadaki bir öğe ad alanını yeniden tanımlarsa, bu öğenin alt öğeleri yeni tanımı devralır.
- Bir öğenin öznitelikleri öğenin ad alanlarını devralır. XAML özniteliklerinde ön ekleri görmek oldukça nadirdir.
Bir XAML dosyası neredeyse her zaman kök öğesinde varsayılan bir XAML ad alanı bildirir. Varsayılan XAML ad alanı, bir ön ek ile nitelemeden bildirebileceğiniz öğeleri tanımlar. Tipik Windows Çalışma Zamanı uygulama projelerinde bu varsayılan ad alanı, Windows Çalışma Zamanı için kullanıcı arabirimi tanımları için kullanılan tüm yerleşik XAML sözcük dağarcığını içerir: varsayılan denetimler, metin öğeleri, XAML grafikleri ve animasyonları, veri bağlama ve stil oluşturma destek türleri vb. Bu nedenle, Windows Çalışma Zamanı uygulamaları için yazacağınız XAML'lerin çoğu ortak kullanıcı arabirimi öğelerine başvururken XAML ad alanlarını ve ön eklerini kullanmaktan kaçınabilecektir.
Burada, bir uygulama için ilk sayfanın şablon tarafından oluşturulan Sayfa kökünü gösteren bir kod parçacığı yer alır (yalnızca açılış etiketini gösterir ve basitleştirilmiştir). Varsayılan ad alanını ve ayrıca x ad alanını (bundan sonra açıklayacağız) bildirir.
<Page
x:Class="Application1.BlankPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
XAML dilindeki XAML ad alanı
Neredeyse tüm Windows Çalışma Zamanı XAML dosyasında deklar edilen belirli bir XAML ad alanı, XAML-dili ad alanıdır. Bu ad alanı, XAML dil belirtimi tarafından tanımlanan öğeleri ve kavramları içerir. Kural gereği, XAML dili XAML ad alanı "x" ön ekine eşlenir. Windows Çalışma Zamanı uygulama projeleri için varsayılan proje ve dosya şablonları, her zaman kök öğenin bir parçası olarak hem varsayılan XAML ad alanını (ön ek olmadan, yalnızca xmlns=) hem de XAML dili XAML ad alanını ("x" ön eki) tanımlar.
"x" ön eki/XAML dili XAML ad alanı, XAML'nizde sık kullandığınız birkaç programlama yapısı içerir. En yaygın olanları şunlardır:
| Süre | Description |
|---|---|
| x:Key | XAML ResourceDictionary içindeki her kaynak için benzersiz bir kullanıcı tanımlı anahtar ayarlar. Anahtarın belirteç dizesi StaticResource işaretleme uzantısının bağımsız değişkenidir ve bu anahtarı daha sonra uygulamanızın XAML'sinin başka bir yerindeki başka bir XAML kullanımından XAML kaynağını almak için kullanırsınız. |
| x:Class | Bir XAML sayfası için arka planda kod sağlayan sınıfın kod ad alanını ve kod sınıfı adını belirtir. Uygulamanızı oluştururken, derleme eylemleri tarafından oluşturulan veya birleştirilen sınıfı adlandırır. Bu derleme eylemleri XAML işaretleme derleyicisini destekler ve uygulama derlendiğinde işaretlemenizi ve arka planda kod oluşturmayı birleştirir. XAML sayfasında arka planda kod oluşturmayı desteklemek için böyle bir sınıfınız olmalıdır. Varsayılan Windows Çalışma Zamanı etkinleştirme modelindeki Window.Content. |
| x:Name | XAML'de tanımlanan bir nesne öğesi işlendikten sonra çalışma zamanı kodunda var olan örnek için bir çalışma zamanı nesne adı belirtir. XAML'de x:Name ayarını kodda adlandırılmış değişken bildirme gibi düşünebilirsiniz. Daha sonra öğreneceğiniz gibi, XAML'niz bir Windows Çalışma Zamanı uygulamasının bileşeni olarak yüklendiğinde tam olarak bu olur.
NotName , çerçevedeki benzer bir özelliktir, ancak tüm öğeler bunu desteklemez. Bu öğe türünde FrameworkElement.Name desteklenmediği her durumda öğe tanımlaması için x:Name kullanın. |
| x:Uid | Bazı özellik değerleri için yerelleştirilmiş kaynakları kullanması gereken öğeleri tanımlar. x:Uid kullanma hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: Ui kaynaklarını çevirme. |
| XAML iç veri türleri | Bu türler, bir öznitelik veya kaynak için gerekli olduğunda basit değer türleri için değerler belirtebilir. Bu iç türler, genellikle her programlama dilinin iç tanımlarının bir parçası olarak tanımlanan basit değer türlerine karşılık gelir. Örneğin, ObjectAnimationUsingKeyFrames görsel taslaklı görsel durumunda kullanmak için gerçek boole değerini temsil eden bir nesneye ihtiyacınız olabilir. XAML'deki bu değer için nesne öğesi olarak x:Boolean iç türünü kullanırsınız, örneğin: <x:Boolean>True</x:Boolean> |
XAML dili XAML ad alanında diğer programlama yapıları vardır ancak bu kadar yaygın değildir.
Özel türleri XAML ad alanlarına eşleme
Dil olarak XAML'nin en güçlü yönlerinden biri, Windows Çalışma Zamanı uygulamalarınız için XAML kelime dağarcığını genişletmenin kolay olmasıdır. Uygulamanızın programlama dilinde kendi özel türlerinizi tanımlayabilir ve ardından XAML işaretlemesinde özel türlerinize başvurabilirsiniz. Özel türler aracılığıyla uzantı desteği, XAML dilinin nasıl çalıştığı konusunda temel olarak yerleşiktir. Çerçeveler veya uygulama geliştiricileri, XAML'nin başvurduğunu yedekleme nesnelerini oluşturmakla sorumludur. Ne çerçeveler ne de uygulama geliştiricisi, sözcük dağarcığındaki nesnelerin temel XAML söz dizimi kurallarını temsil ettiği veya ötesinde ne yaptıklarına ilişkin belirtimlere bağlı değildir. (XAML dili XAML ad alanı türlerinin ne yapması gerektiğine ilişkin bazı beklentiler vardır, ancak Windows Çalışma Zamanı tüm gerekli desteği sağlar.)
Windows Çalışma Zamanı çekirdek kitaplıkları ve meta verileri dışındaki kitaplıklardan gelen türler için XAML kullanıyorsanız, bir XAML ad alanını bir ön ek ile bildirmeniz ve eşlemeniz gerekir. Kitaplığınızda tanımlanan türlere başvurmak için öğe kullanımlarında bu ön eki kullanın. Ön ek eşlemelerini genellikle diğer XAML ad alanı tanımlarıyla birlikte bir kök öğesinde xmlns öznitelikleri olarak bildirirsiniz.
Özel türlere başvuran kendi ad alanı tanımınızı oluşturmak için önce xmlns: anahtar sözcüğünü, sonra da istediğiniz ön eki belirtirsiniz. Bu özniteliğin değeri, kullanarak: anahtar sözcüğüyle başlamalıdır. Değerin geri kalanı, özel türlerinizi içeren belirli kod destekleyen ad alanını adına göre referans alan bir dize belirtecidir.
Ön ek, bu XAML dosyasındaki işaretlemenin geri kalanında bu XAML ad alanına başvurmak için kullanılan işaretleme belirtecini tanımlar. İki nokta üst üste karakteri (:), prefix ile XAML ad alanı içinde başvurulacak varlık arasında yer alır.
Örneğin, bir ön eki myTypes ad alanına myCompany.myTypes eşlemek için öznitelik söz dizimi şöyledir: xmlns:myTypes="using:myCompany.myTypes"ve temsili öğe kullanımı: <myTypes:CustomButton/>
Visual C++ bileşen uzantıları (C++/CX) için dikkat edilmesi gerekenler de dahil olmak üzere özel türler için XAML ad alanlarını eşleme hakkında daha fazla bilgi için bkz. XAML ad alanları ve ad alanı eşlemesi.
Diğer XAML ad alanları
Genellikle "d" (tasarımcı ad alanı için) ve "mc" (işaretleme uyumluluğu için) ön eklerini tanımlayan XAML dosyaları görürsünüz. Bunlar genellikle altyapı desteğine veya bir tasarım zamanı aracında senaryoları etkinleştirmeye yöneliktir. Daha fazla bilgi için XAML ad alanları konusunun "Diğer XAML ad alanları" bölümüne bakın.
Biçimlendirme Uzantıları
İşaretleme uzantıları, genellikle Windows Runtime XAML uygulamasında kullanılan bir XAML dil kavramıdır. İşaretleme uzantıları genellikle bir XAML dosyasının yalnızca yedekleme türlerine göre öğeleri bildirmeden bir değere veya davranışa erişmesini sağlayan bir tür "kısayolu" temsil eder. Bazı işaretleme uzantıları, söz dizimini veya farklı XAML dosyaları arasındaki etkenleri basitleştirmek amacıyla özellikleri düz metinlerle veya eklenen iç içe geçmiş öğelerle ayarlayabilir.
XAML özniteliği söz diziminde, "{" ve "}" küme ayraçları, XAML işaretleme uzantısının kullanıldığını gösterir. Bu kullanım, XAML işlemesinin öznitelik değerlerini sabit bir dize veya doğrudan dizeye dönüştürülebilir bir değer olarak ele alma işleminden farklı bir şekilde ele almasını sağlar. Bunun yerine, XAML ayrıştırıcısı söz konusu işaretleme uzantısı için davranış sağlayan kodu çağırır ve bu kod, XAML ayrıştırıcısının ihtiyaç duyduğu alternatif bir nesne veya davranış sonucu sağlar. İşaretleme uzantılarında, işaretleme uzantısının adını izleyen ve küme ayraçlarının içinde de yer alan bağımsız değişkenler olabilir. Genellikle, değerlendirilen bir işaretleme uzantısı bir nesne dönüş değeri sağlar. Ayrıştırma sırasında, bu dönüş değeri, işaretleme uzantısı kullanımının kaynak XAML'de bulunduğu nesne ağacındaki konuma eklenir.
Windows Runtime XAML, varsayılan XAML ad alanı altında tanımlanan ve Windows Çalışma Zamanı XAML ayrıştırıcısı tarafından anlaşılan bu işaretleme uzantılarını destekler:
- {x:Bind}: derleme zamanında oluşturduğu özel amaçlı kodu yürüterek çalışma zamanına kadar özellik değerlendirmesini engelleyen veri bağlamayı destekler. Bu işaretleme uzantısı çok çeşitli bağımsız değişkenleri destekler.
- {Binding}: Genel amaçlı çalışma zamanı nesne incelemesi yürüterek çalışma zamanına kadar özellik değerlendirmesini engelleyen veri bağlamayı destekler. Bu işaretleme uzantısı çok çeşitli bağımsız değişkenleri destekler.
-
{StaticResource}: ResourceDictionary içinde tanımlanan kaynak değerlerine başvurmayı destekler. Bu kaynaklar farklı bir XAML dosyasında olabilir, ancak sonuçta yükleme zamanında XAML ayrıştırıcısı tarafından bulunabilir olmalıdır.
{StaticResource}kullanımının bağımsız değişkeni, ResourceDictionary içindeki anahtarlı kaynağın kimliğini (anahtar adı) tanımlar. - {ThemeResource}: {StaticResource} ile benzer ancak çalışma zamanı tema değişikliklerine yanıt verebilir. {ThemeResource}, windows çalışma zamanı varsayılan XAML şablonlarında oldukça sık görünür, çünkü bu şablonların çoğu uygulama çalışırken tema değiştirme kullanıcısıyla uyumluluk için tasarlanmıştır.
- {TemplateBinding}: XAML'deki denetim şablonlarını ve çalışma zamanında son kullanımlarını destekleyen özel bir {Binding} örneği.
- {RelativeSource}: değerlerin şablonlanmış üst öğeden geldiği belirli bir şablon bağlama biçimini etkinleştirir.
- {CustomResource}: gelişmiş kaynak arama senaryoları için.
Windows Çalışma Zamanı ayrıca {x:Null} işaretleme uzantısını da destekler. XAML'de Nullable değerleri null olarak ayarlamak için kullanılır. Örneğin bunu, null değerini belirsiz bir denetim durumu ("Belirsiz" görsel durumunu tetikleyen) olarak yorumlayan bir CheckBox için denetim şablonunda kullanabilirsiniz.
İşaretleme genişletmesi, genellikle uygulama için nesne grafiğinin başka bir bölümünden mevcut bir örneği döndürür veya çalışma zamanına bir değeri erteler. İşaretleme uzantısını bir öznitelik değeri olarak kullanma şansınız olduğu için ve bu tipik bir kullanım olduğundan, genellikle işaretleme uzantılarının, aksi takdirde bir özellik öğesi sözdizimi gerektirebilecek başvuru türü özellikler için değer sağladığını görürsünüz.
Örneğin, bir ResourceDictionary'den yeniden kullanılabilir bir stile başvurmak için söz dizimi şöyledir: <Button Style="{StaticResource SearchButtonStyle}"/>.
Stil, basit bir değer değil, bir başvuru türüdür; bu nedenle {StaticResource} kullanımı olmadan <Button.Style> özelliğini ayarlamak için bir özellik öğesi ve bunun içinde bir <Style> tanım gerekirdiFrameworkElement.Style.
İşaretleme uzantıları kullanılarak, XAML'de ayarlanabilen her özellik, öznitelik söz dizimiyle potansiyel olarak ayarlanabilir. Doğrudan nesne instansiyasyonunu desteklemese bile, bir özellik için başvuru değerleri sağlamak amacıyla öznitelik söz dizimini kullanabilirsiniz. Veya XAML özelliklerinin değer türleriyle veya yeni oluşturulan başvuru türleriyle doldurulması genel gereksinimini engelleyen belirli bir davranışı etkinleştirebilirsiniz.
Göstermek için, sonraki XAML örneği öznitelik söz dizimini kullanarak bir Border'ın FrameworkElement.Style özelliği değerini ayarlar.
FrameworkElement.Style özelliği, varsayılan olarak öznitelik söz dizimi dizesi kullanılarak oluşturulamayan bir başvuru türü olan Style sınıfının bir örneğini alır. Ancak bu durumda özniteliği, staticResource adlı belirli bir işaretleme uzantısına başvurur. Bu işaretleme uzantısı işlendiğinde, kaynak sözlüğünde daha önce anahtarlı kaynak olarak tanımlanan bir Style öğesine başvuru döndürür.
<Canvas.Resources>
<Style TargetType="Border" x:Key="PageBackground">
<Setter Property="BorderBrush" Value="Blue"/>
<Setter Property="BorderThickness" Value="5"/>
</Style>
</Canvas.Resources>
...
<Border Style="{StaticResource PageBackground}">
...
</Border>
biçimlendirme uzantılarını iç içe yerleştirebilirsiniz. En içteki işaretleme uzantısı önce değerlendirilir.
İşaretleme uzantıları nedeniyle, bir öznitelikteki "{" değişmez değeri için özel bir söz dizimi gerekir. Daha fazla bilgi için bkz. XAML söz dizimi kılavuzu.
Events
XAML, nesneler ve özellikleri için bildirim temelli bir dildir, ancak işaretlemedeki nesnelere olay işleyicileri eklemek için bir söz dizimi de içerir. XAML olay söz dizimi, XAML tarafından bildirilen olayları Windows Çalışma Zamanı programlama modeli aracılığıyla tümleştirebilir. Olayın adını, olayın işlendiği nesnede öznitelik adı olarak belirtirsiniz. Öznitelik değeri için kodda tanımladığınız bir olay işleyicisi işlevinin adını belirtirsiniz. XAML işlemcisi, yüklenen nesne ağacında temsilci gösterimi oluşturmak için bu adı kullanır ve belirtilen işleyiciyi bir iç işleyici listesine ekler. Neredeyse tüm Windows Çalışma Zamanı uygulamaları hem işaretleme hem de arka planda kod kaynakları tarafından tanımlanır.
İşte basit bir örnek. Button sınıfı Click adlı bir olayı destekler. Kullanıcı Düğme'ye tıkladıktan sonra çağrılacak kodu çalıştıran Click için bir işleyici yazabilirsiniz. XAML'de Click özniteliğini Button üzerinde belirtirsiniz. Öznitelik değeri için, işleyicinizin yöntem adı olan bir dize sağlayın.
<Button Click="showUpdatesButton_Click">Show updates</Button>
Derleme yaptığınızda, derleyici şimdi XAML sayfasının x:Class değerinde belirtilen ad alanında, kodun arka plan dosyasında tanımlanmış olan showUpdatesButton_Click adında bir yöntem olmasını bekler. Ayrıca, bu yöntemin Click olayı için temsilci sözleşmesini karşılaması gerekir. Örneğin:
namespace App1
{
public sealed partial class MainPage: Page {
...
private void showUpdatesButton_Click (object sender, RoutedEventArgs e) {
//your code
}
}
}
' Namespace included at project level
Public NotInheritable Class MainPage
Inherits Page
...
Private Sub showUpdatesButton_Click (sender As Object, e As RoutedEventArgs e)
' your code
End Sub
...
End Class
namespace winrt::App1::implementation
{
struct MainPage : MainPageT<MainPage>
{
...
void showUpdatesButton_Click(Windows::Foundation::IInspectable const&, Windows::UI::Xaml::RoutedEventArgs const&);
};
}
// .h
namespace App1
{
public ref class MainPage sealed {
...
private:
void showUpdatesButton_Click(Object^ sender, RoutedEventArgs^ e);
};
}
Bir projede XAML bir .xaml dosyası olarak yazılır ve arka planda kod dosyası yazmak için tercih ettiğiniz dili (C#, Visual Basic, C++/CX) kullanırsınız. Bir XAML dosyası, proje için bir derleme eyleminin parçası olarak işaretlemeyle derlendiğinde, her XAML sayfasının XAML arka plan kod dosyasının konumu, XAML sayfasının kök öğesinin x:Class özniteliği olarak bir ad alanı ve sınıf belirtilerek tanımlanır. Bu mekanizmaların XAML'de nasıl çalıştığı ve bunların programlama ve uygulama modelleriyle ilişkisi hakkında daha fazla bilgi için bkz . Olaylara ve yönlendirilen olaylara genel bakış.
Uyarı
C++/CX için iki arka planda kod dosyası vardır: biri üst bilgi (.xaml.h) ve diğeri uygulama (.xaml.cpp). Uygulama, üst bilgiyi referans alır; teknik olarak üst bilgi, code-behind bağlantısı için giriş noktasını temsil eder.
Kaynak sözlükleri
Kaynak Sözlüğü oluşturmak, genellikle bir kaynak sözlüğü XAML sayfasının alanı veya ayrı bir XAML dosyası olarak yazılarak gerçekleştirilir. Kaynak sözlükleri ve bunların nasıl kullanılacağı, bu konunun kapsamı dışında olan daha büyük bir kavramsal alandır. Daha fazla bilgi için bkz . ResourceDictionary ve XAML kaynak başvuruları.
XAML ve XML
XAML dili temelde XML dilini temel alır. Ancak XAML, XML'i önemli ölçüde genişletir. Özellikle, arka plan türü kavramıyla ilişkisi nedeniyle şema kavramını oldukça farklı ele alır ve ekli üyeler ve işaretleme uzantıları gibi dil öğelerini ekler. xml:lang XAML'de geçerlidir, ancak çalışma zamanını ayrıştırma davranışı yerine etkiler ve genellikle çerçeve düzeyinde bir özelliğe diğer ad olarak kullanılır. Daha fazla bilgi için bkz. FrameworkElement.Language. xml:base işaretlemede geçerlidir ancak ayrıştırıcılar bunu yoksayar. xml:space geçerlidir, ancak yalnızca XAML ve boşluk konusunda açıklanan senaryolar için geçerlidir. Kodlama özniteliği XAML'de geçerlidir. Yalnızca UTF-8 ve UTF-16 kodlamaları desteklenir. UTF-32 kodlaması desteklenmez.
XAML'de büyük/küçük harf duyarlılığı
XAML büyük/küçük harfe duyarlıdır. Bu, XAML'nin büyük/küçük harfe duyarlı xml tabanlı olmasının bir diğer sonucudur. XAML öğelerinin ve özniteliklerinin adları büyük/küçük harfe duyarlıdır. Bir özniteliğin değeri büyük/küçük harfe duyarlı olabilir; bu, öznitelik değerinin belirli özellikler için nasıl işlendiğine bağlıdır. Örneğin, öznitelik değeri bir numaralandırmanın üye adını bildiriyorsa, bir üye adı dizesini numaralandırma üye değerine dönüştüren yerleşik tür dönüştürme davranışı büyük/küçük harfe duyarlı değildir. Buna karşılık, Name özelliğinin değeri ve Name özelliğinin belirttiği ada göre nesnelerle çalışmaya yönelik yardımcı yöntemler, ad dizesini büyük/küçük harfe duyarlı olarak ele alır.
XAML namescope'ları
XAML dili, XAML ad kapsamı kavramını tanımlar. XAML ad kapsamı kavramı, XAML işlemcilerinin XAML öğelerine uygulanan x:Name veya Name değerini, özellikle adların benzersiz tanımlayıcılar olması için temel alınması gereken kapsamları nasıl ele alması gerektiğini etkiler. XAML ad kapsamları ayrı bir konuda daha ayrıntılı olarak ele alınmıştır; bkz . XAML ad kapsamları.
XAML'nin geliştirme sürecindeki rolü
XAML, uygulama geliştirme sürecinde birkaç önemli rol oynar.
- C#, Visual Basic veya C++/CX kullanarak programlama yaparsanız XAML, uygulamanın kullanıcı arabirimini ve bu kullanıcı arabirimindeki öğeleri bildirmeye yönelik birincil biçimdir. Genellikle projenizdeki en az bir XAML dosyası, uygulamanızda başlangıçta görüntülenen kullanıcı arabirimi için bir sayfa metaforunu temsil eder. Ek XAML dosyaları gezinti kullanıcı arabirimi için ek sayfalar bildirebilir. Şablonlar veya stiller gibi diğer XAML dosyaları kaynakları bildirebilir.
- Bir uygulamanın denetimlerine ve kullanıcı arabirimine uygulanan stilleri ve şablonları bildirmek için XAML biçimini kullanırsınız.
- Varolan denetimleri şablon oluşturmak için veya bir denetim paketinin parçası olarak varsayılan şablon sağlayan bir denetim tanımlarsanız, stilleri ve şablonları kullanabilirsiniz. Stilleri ve şablonları tanımlamak için kullandığınızda, ilgili XAML genellikle ResourceDictionary köküne sahip ayrık bir XAML dosyası olarak bildirilir.
- XAML, uygulama kullanıcı arabirimi oluşturma ve kullanıcı arabirimi tasarımını farklı tasarımcı uygulamaları arasında takas etme konusunda tasarımcı desteği için yaygın kullanılan biçimdir. En önemlisi, uygulama için XAML, farklı XAML tasarım araçları (veya araçlar içindeki tasarım pencereleri) arasında değiştirilebilir.
- Diğer birçok teknoloji de XAML'de temel kullanıcı arabirimini tanımlar. Windows Presentation Foundation (WPF) XAML ve Microsoft Silverlight XAML ile ilişkili olarak, Windows Çalışma Zamanı için XAML, paylaşılan varsayılan XAML ad alanı için aynı URI'yi kullanır. Windows Çalışma Zamanı için XAML sözlüğü, Silverlight tarafından da kullanılan Uygulama Kullanıcı Arabirimi (UI) için XAML sözlüğüyle ve WPF tarafından daha az ölçüde örtüşmektedir. Bu nedenle XAML, başlangıçta XAML kullanan öncül teknolojiler için tanımlanan kullanıcı arabirimi için verimli bir geçiş yolunu yükseltmektedir.
- XAML, bir kullanıcı arabiriminin görsel görünümünü tanımlar ve ilişkili arka planda kod dosyası mantığı tanımlar. Arka planda mantıkta değişiklik yapmadan kullanıcı arabirimi tasarımını ayarlayabilirsiniz. XAML, tasarımcılar ve geliştiriciler arasındaki iş akışını basitleştirir.
- Görsel tasarımcının zenginliği ve XAML dili için tasarım yüzeyi desteği nedeniyle, XAML erken geliştirme aşamalarında hızlı kullanıcı arabirimi prototipini destekler.
Geliştirme sürecindeki kendi rolünüze bağlı olarak, XAML ile çok fazla etkileşim kuramayabilirsiniz. XAML dosyalarıyla etkileşim kurma dereceniz, hangi geliştirme ortamını kullandığınıza, araç kutuları ve özellik düzenleyicileri gibi etkileşimli tasarım ortamı özelliklerini kullanıp kullanmadığınıza ve Windows Çalışma Zamanı uygulamanızın kapsamına ve amacına da bağlıdır. Bununla birlikte, uygulamanın geliştirilmesi sırasında bir metin veya XML düzenleyicisi kullanarak öğe düzeyinde bir XAML dosyasını düzenlemeniz olasıdır. Bu bilgileri kullanarak, bir metin veya XML gösteriminde XAML'yi güvenle düzenleyebilir ve araçlar, işaretleme derleme işlemleri veya Windows Çalışma Zamanı uygulamanızın çalışma zamanı aşaması tarafından kullanıldığında bu XAML dosyasının bildirimlerinin ve amacının geçerliliğini koruyabilirsiniz.
XAML'nizi yük performansı için iyileştirme
Performans için en iyi yöntemleri kullanarak XAML'de kullanıcı arabirimi öğelerini tanımlamaya yönelik bazı ipuçları aşağıdadır. Bu ipuçlarının çoğu XAML kaynaklarının kullanımıyla ilgilidir, ancak kolaylık sağlamak için burada genel XAML'ye genel bakış bölümünde listelenmiştir. XAML kaynakları hakkında daha fazla bilgi için bkz. ResourceDictionary ve XAML kaynak başvuruları. XAML de dahil olmak üzere, XAML'nizde kaçınmanız gereken düşük performans uygulamalarından bazılarını kasıtlı olarak gösteren performansla ilgili daha fazla ipucu için bkz. XAML işaretlemenizi iyileştirme.
- XAML'nizde aynı renk fırçasını sık sık kullanıyorsanız, her seferinde öznitelik değeri olarak adlandırılmış bir renk kullanmak yerine bir SolidColorBrush'ı kaynak olarak tanımlayın.
- Aynı kaynağı birden çok kullanıcı arabirimi sayfasında kullanıyorsanız, her sayfada değil Application.Resources'ta tanımlamayı göz önünde bulundurun. Buna karşılık, yalnızca bir sayfa kaynak kullanıyorsa, bunu Application.Resources içinde tanımlamayın ve bunun yerine yalnızca ihtiyacı olan sayfa için tanımlayın. Bu hem uygulamanızı tasarlarken hem de XAML ayrıştırma sırasında performans için XAML çarpanları için iyidir.
- Uygulamanızın paketlediği kaynaklarda, kullanılmayan kaynaklar (anahtara sahip, ancak uygulamanızda onu kullanan herhangi bir StaticResource referansı bulunmayan kaynaklar) olup olmadığını kontrol edin. Uygulamanızı yayınlamadan önce bunları XAML'nizden kaldırın.
- Tasarım kaynakları (MergedDictionaries) sağlayan ayrı XAML dosyaları kullanıyorsanız, kullanılmayan kaynakları bu dosyalardan açıklama eklemeyi veya kaldırmayı göz önünde bulundurun. Birden fazla uygulamada kullandığınız veya tüm uygulamanız için ortak kaynaklar sağlayan paylaşılan bir XAML başlangıç noktanız olsa bile, yine de XAML kaynaklarını her seferinde paketleyen ve bunları yükleme olasılığı olan uygulamanızdır.
- Oluşturma için ihtiyacınız olmayan kullanıcı arabirimi öğelerini tanımlamayın ve mümkün olduğunda varsayılan denetim şablonlarını kullanın (bu şablonlar yük performansı için zaten test edilmiş ve doğrulanmıştır).
- Kullanıcı arabirimi öğelerinin kasıtlı olarak üzerine çizmek yerine Border gibi kapsayıcıları kullanın. Temel olarak, aynı pikseli birden çok kez çizmeyin. Çizim aşımı ve bunun test edilmesi hakkında daha fazla bilgi için bkz DebugSettings.IsOverdrawHeatMapEnabled.
- ListView veya GridView için varsayılan öğe şablonlarını kullanın; bunlar, çok sayıda liste öğesi için görsel ağacı oluştururken performans sorunlarını çözen özel Sunucu mantığına sahiptir.
XAML hatalarını ayıklama
XAML bir işaretleme dili olduğundan, Microsoft Visual Studio'da hata ayıklamaya yönelik bazı tipik stratejiler kullanılamaz. Örneğin, bir XAML dosyası içinde kesme noktası ayarlamanın hiçbir yolu yoktur. Ancak, uygulamanızı geliştirmeye devam ederken ui tanımlarıyla veya diğer XAML işaretlemeleriyle ilgili sorunlarda hata ayıklamanıza yardımcı olabilecek başka teknikler de vardır.
Bir XAML dosyasıyla ilgili sorunlar olduğunda en tipik sonuç, bir sistemin veya uygulamanızın bir XAML ayrıştırma özel durumu oluşturmasıdır. XAML ayrıştırma özel durumu olduğunda, XAML ayrıştırıcısı tarafından yüklenen XAML geçerli bir nesne ağacı oluşturamadı. Bazı durumlarda, örneğin XAML uygulamanızın kök görsel olarak yüklenen ilk "sayfasını" temsil ettiğinde, XAML ayrıştırma özel durumu kurtarılamaz.
XAML genellikle Visual Studio ve XAML tasarım yüzeylerinden biri gibi bir IDE içinde düzenlenir. Visual Studio, XAML kaynağını düzenlerken genellikle tasarım zamanı doğrulaması ve hata denetimi sağlayabilir. Örneğin, hatalı bir öznitelik değeri yazdığınız anda XAML metin düzenleyicisinde "dalgalı çizgiler" görüntüleyebilir ve kullanıcı arabirimi tanımınızda bir sorun olduğunu görmek için XAML derleme geçişini beklemeniz bile gerekmez.
Uygulama gerçekten çalıştıktan sonra, herhangi bir XAML ayrıştırma hatası tasarım zamanında algılanmamışsa, bunlar ortak dil çalışma zamanı (CLR) tarafından XamlParseException olarak bildirilir. Çalışma zamanı XamlParseException için neler yapabileceğiniz hakkında daha fazla bilgi için bkz. C# veya Visual Basic'te Windows Çalışma Zamanı uygulamaları için özel durum işleme.
Uyarı
Kod için C++/CX kullanan uygulamalar belirli XamlParseException'ı alamaz. Ancak özel durumdaki ileti, hatanın kaynağının XAML ile ilgili olduğunu belirtir ve XamlParseException'da olduğu gibi bir XAML dosyasındaki satır numaraları gibi bağlam bilgilerini içerir.
Windows Çalışma Zamanı uygulamasında hata ayıklama hakkında daha fazla bilgi için bkz. Hata ayıklama oturumu başlatma.
Windows developer