Arka Plan Kod ve WPF İçindeki XAML

Arka planda kod, bir XAML sayfası işaretlemeyle derlendiğinde işaretleme tanımlı nesnelerle birleştirilen kodu açıklamak için kullanılan bir terimdir. Bu konu, arka planda kod gereksinimlerinin yanı sıra XAML'deki kod için alternatif bir satır içi kod mekanizmasını açıklar.

Bu konu, aşağıdaki bölümleri içerir:

Ön koşullar

Bu konu başlığında WPF'de XAML'yi okuduğunuz ve CLR ve nesne odaklı programlama hakkında bazı temel bilgilere sahip olduğunuz varsayılır.

Arka Planda Kod ve XAML Dili

XAML dili, işaretleme dosyası tarafından kod dosyalarını işaretleme dosyalarıyla ilişkilendirmeyi mümkün hale getiren dil düzeyinde özellikler içerir. Özellikle, XAML dili x:Class Yönergesi, x:Subclass Yönergesi ve x:ClassModifier Yönergesi dil özelliklerini tanımlar. Kodun tam olarak nasıl üretilmesi gerektiği ve işaretleme ile kodun nasıl tümleştirileceği, XAML dilinin belirttiğinin bir parçası değildir. Kodun nasıl tümleştirileceğini, uygulama ve programlama modellerinde XAML'nin nasıl kullanılacağını ve tüm bunların gerektirdiği derleme eylemlerini veya diğer desteği belirlemek için WPF gibi çerçevelere bırakılır.

WPF'de arka planda kod, Olay İşleyicisi ve Kısmi Sınıf Gereksinimleri

  • Kısmi sınıf, kök öğeyi destekleyen türden türetilmelidir.

  • İşaretleme derleme derleme eylemlerinin varsayılan davranışı altında, türetmeyi arka planda kod tarafında kısmi sınıf tanımında boş bırakabileceğinizi unutmayın. Derlenen sonuç, sayfa kökü yedekleme türünün belirtilmemiş olsa bile kısmi sınıfın temeli olduğunu varsayar. Ancak, bu davranışa güvenmek en iyi yöntem değildir.

  • Arka planda koda yazdığınız olay işleyicileri örnek yöntemleri olmalıdır ve statik yöntemler olamaz. Bu yöntemler tarafından tanımlanan CLR ad alanında kısmi sınıf tarafından x:Classtanımlanmalıdır. XAML işlemcisine farklı bir sınıf kapsamında olay kablolama için bir olay işleyicisi araması talimatı vermek üzere bir olay işleyicisinin adını niteleyemezsiniz.

  • İşleyici, yedekleme türü sistemindeki uygun olay için temsilciyle eşleşmelidir.

  • Özellikle Microsoft Visual Basic dili için, işleyicileri XAML'deki özniteliklerle eklemek yerine işleyicileri işleyici bildirimindeki örnekler ve olaylarla ilişkilendirmek için dile özgü Handles anahtar sözcüğünü kullanabilirsiniz. Ancak, anahtar sözcüğü belirli yönlendirilmiş olay senaryoları Handles veya ekli olaylar gibi WPF olay sisteminin belirli özelliklerinin tümünü destekleyebileceğinden bu tekniğin bazı sınırlamaları vardır. Ayrıntılar için bkz . Visual Basic ve WPF Olay İşleme.

x:Code

x:Code , XAML'de tanımlanan bir yönerge öğesidir. Yönerge x:Code öğesi satır içi programlama kodu içerebilir. Satır içinde tanımlanan kod, XAML ile aynı sayfada etkileşimde bulunabilir. Aşağıdaki örnekte satır içi C# kodu gösterilmektedir. Bir XAML işlemcisinin (XAML şemasını veya WPF şemasını yorumlayarak) içeriği tam anlamıyla XML olarak yorumlamaya çalışmaması için kodun öğesinin içinde x:Code olduğuna ve XML içeriğinden kaçmak için kodun ...]]> ile <CDATA[çevrelenmesi gerektiğ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ından kaçınmayı veya sınırlamayı göz önünde bulundurmalısınız. Mimari ve kodlama felsefesi açısından işaretleme ve arka planda kod ayrımı sağlamak tasarımcı ve geliştirici rollerini çok daha ayrı tutar. Daha teknik bir düzeyde, satır içi kod için yazdığınız kodun yazılması garip olabilir çünkü her zaman XAML tarafından oluşturulan kısmi sınıfa yazarsınız ve yalnızca varsayılan XML ad alanı eşlemelerini kullanabilirsiniz. Deyim ekleyemediğiniz using için, yaptığınız API çağrılarının çoğunu tam olarak nitelemeniz gerekir. Varsayılan WPF eşlemeleri, WPF derlemelerinde mevcut olan tüm CLR ad alanlarının çoğunu içerir; diğer CLR ad alanlarının içinde yer alan tür ve üyelere yönelik çağrıları tam olarak nitelemeniz gerekir. Satır içi kodda kısmi sınıfın ötesinde hiçbir şey tanımlayamazsınız ve başvurabileceğiniz tüm kullanıcı kodu varlıkları, oluşturulan kısmi sınıf içinde üye veya değişken olarak bulunmalıdır. Makrolar veya genel değişkenler veya #ifdef derleme değişkenleri gibi diğer dile özgü programlama özellikleri de kullanılamaz. Daha fazla bilgi için bkz . x:Code İç XAML Türü.

Ayrıca bkz.