Arka Plan Kod ve WPF İçindeki XAML
Arka plan kodu, bir XAML sayfası biçimlendirme derlenmiş olduğunda, biçimlendirme tanımlı nesneler ile birleştirilen kodu anlatmak için kullanılan bir terimdir. Bu konuda, XAML 'deki kod için alternatif bir satır içi kod mekanizması ve arka plan kodu gereksinimleri açıklanmaktadır.
Bu konu aşağıdaki bölümleri içermektedir:
Önkoşullar
Bu konu başlığı altında, WPF XAML 'yi okuduğunuzu ve clr ve nesne odaklı programlama hakkında temel bilgiye sahip olduğunuzu varsaymaktadır.
Code-Behind ve XAML dili
XAML dili, biçimlendirme dosyası tarafındaki kod dosyalarını biçimlendirme dosyalarıyla ilişkilendirmeyi olanaklı kılan dil düzeyi özellikleri içerir. Özellikle XAML dili, X:Class yönergesi, x:alt sınıf yönergesive x:ClassModifier yönergesinidil özelliklerini tanımlar. Kodun nasıl üretileceği, biçimlendirme ve kodun nasıl tümleştirileceği, XAML dilinin neyi belirttiği bir parçası değildir. Kodun nasıl tümleştirileceğini, uygulama ve programlama modellerinde XAML 'yi kullanmayı ve bunun gerektirdiği derleme eylemlerini veya diğer desteği öğrenmek için WPF gibi çerçevelere ayrıldınız.
WPF 'deki arka plan kod, olay Işleyicisi ve kısmi sınıf gereksinimleri
Kısmi sınıf kök öğeyi yedekleyen türden türetilmelidir.
Biçimlendirme derlemesi oluşturma eylemlerinin varsayılan davranışı altında, türetme kodunu arka plan kod tarafında kısmi sınıf tanımında boş bırakabilirsiniz. Derlenmiş sonuç, belirtilmese de, sayfa kökünün yedekleme türünü kısmi sınıfın temeli olacak şekilde varsayar. Ancak, bu davranışa bağlı olarak en iyi yöntem değildir.
Arka planda yazdığınız olay işleyicileri örnek yöntemler olmalıdır ve statik yöntemler olamaz. Bu yöntemlerin, tarafından tanımlanan CLR ad alanı içindeki kısmi sınıf tarafından tanımlanması gerekir
x:Class. Bir XAML işlemcisinin, farklı bir sınıf kapsamındaki olay kablolama için bir olay işleyicisini arayacağı şekilde talimat vermek üzere bir olay işleyicisinin adını niteleyemezsiniz.İşleyici, yedekleme türü sistemindeki ilgili olay için temsilciyle eşleşmelidir.
özel olarak Microsoft Visual Basic dili için,
HandlesXAML 'de özniteliklere sahip işleyicileri eklemek yerine işleyicileri işleyici bildiriminde örnek ve olaylarla ilişkilendirmek için dile özgü anahtar sözcüğünü kullanabilirsiniz. Ancak,Handlesanahtar sözcüğü belirli yönlendirilmiş olay senaryoları veya ekli olaylar gıbı WPF olay sisteminin tüm özelliklerini destekleyemediği için bu teknik bazı sınırlamalar getirir. ayrıntılar için bkz. Visual Basic ve WPF olay işleme.
x:Code
X:Code , XAML 'de tanımlanmış bir Directive öğesidir. Bir x:Code Directive öğesi, satır içi programlama kodu içerebilir. Satır içi tanımlı kod XAML ile aynı sayfada etkileşim kurabilir. Aşağıdaki örnek, satır içi C# kodunu gösterir. x:Code<CDATA[]]> Bir XAML işlemcisinin (xaml şeması veya WPF şeması yorumlanarak) XML olarak tam olarak yorumlanmaya çalıştıklarında, kodun öğenin içinde olduğuna ve kodun... tarafından çevrelendiğine dikkat edin.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyNamespace.MyCanvasCodeInline"
>
<Button Name="button1" Click="Clicked">Click Me!</Button>
<x:Code><![CDATA[
void Clicked(object sender, RoutedEventArgs e)
{
button1.Content = "Hello World";
}
]]></x:Code>
</Page>
Satır içi kod sınırlamaları
Satır içi kod kullanımının önlenmemesini veya sınırlandırmasını düşünmelisiniz. Mimari ve kodlama FI açısından, biçimlendirme ve arka plan arasındaki ayrımı korumak, tasarımcı ve geliştirici rollerinin çok daha belirgin kalmasını önler. Daha teknik bir düzeyde, her zaman XAML tarafından oluşturulan kısmi sınıfa yazıyorsanız ve yalnızca varsayılan XML ad alanı eşlemelerini kullanabilmesi nedeniyle, satır içi kod için yazdığınız kod yazmak için çok az olabilir. Deyim ekleyemediği using için, yaptığınız bırçok API çağrısının çoğunu tam olarak nitelemeniz gerekir. Varsayılan WPF eşlemeleri, WPF derlemelerinde bulunan tüm CLR ad alanlarını içermez; ancak diğer CLR ad alanlarında bulunan türlere ve üyelere yönelik çağrıları tamamen nitelemeniz gerekir. Ayrıca, satır içi koddaki kısmi sınıfın ötesinde herhangi bir şey tanımlayamazsınız ve başvurmakta olduğunuz tüm Kullanıcı kodu varlıklarının, oluşturulan kısmi sınıf içinde bir üye veya değişken olarak mevcut olması gerekir. Makrolar veya #ifdef genel değişkenlere veya derleme değişkenlerine karşı diğer dile özgü programlama özellikleri de kullanılamaz. Daha fazla bilgi için bkz. X:Code IÇSEL xaml türü.