Aracılığıyla paylaş


Bölüm 1. XAML Kullanmaya Başlarken

Bir Xamarin.Forms uygulamada, XAML çoğunlukla bir sayfanın görsel içeriğini tanımlamak için kullanılır ve C# arka planda kod dosyasıyla birlikte çalışır.

Arka planda kod dosyası, işaretleme için kod desteği sağlar. Bu iki dosya birlikte alt görünümleri ve özellik başlatmayı içeren yeni bir sınıf tanımına katkıda bulunur. XAML dosyasında sınıflara ve özelliklere XML öğeleri ve öznitelikleri ile başvurulur ve işaretleme ile kod arasındaki bağlantılar oluşturulur.

Çözüm Oluşturma

İlk XAML dosyanızı düzenlemeye başlamak için Visual Studio veya Mac için Visual Studio kullanarak yeni Xamarin.Forms bir çözüm oluşturun. (Ortamınıza karşılık gelen aşağıdaki sekmeyi seçin.)

Windows'ta Visual Studio 2019'u başlatın ve başlangıç penceresinde Yeni proje oluştur'a tıklayarak yeni bir proje oluşturun:

Yeni Çözüm Penceresi

Yeni proje oluştur penceresinde Proje türü açılan listesinde Mobil'i seçin, Mobil Uygulama (Xamarin.Forms) şablonunu seçin ve İleri düğmesine tıklayın:

Yeni Proje Penceresi

Yeni projenizi yapılandırın penceresinde Proje adını XamlSamples (veya tercihinize bağlı olarak) olarak ayarlayın ve Oluştur düğmesine tıklayın.

Yeni Platformlar Arası Uygulama iletişim kutusunda Boş'a ve ardından Tamam düğmesine tıklayın:

Yeni Uygulama İletişim Kutusu

Çözümde dört proje oluşturulur: XamlSamples .NET Standard kitaplığı, XamlSamples.Android, XamlSamples.iOS ve Evrensel Windows Platformu çözümü XamlSamples.UWP.

XamlSamples çözümünü oluşturduktan sonra, çözüm başlangıç projesi olarak çeşitli platform projelerini seçerek ve proje şablonu tarafından oluşturulan basit uygulamayı telefon öykünücülerine veya gerçek cihazlara oluşturup dağıtarak geliştirme ortamınızı test etmek isteyebilirsiniz.

Platforma özgü kod yazmanız gerekmediği sürece, paylaşılan XamlSamples .NET Standart kitaplık projesi neredeyse tüm programlama zamanınızı harcayabileceğiniz yerdir. Bu makaleler bu projenin dışına çıkmayacaktır.

XAML Dosyasının Anatomisi

XamlSamples .NET Standard kitaplığında aşağıdaki adlara sahip bir dosya çifti bulunur:

  • App.xaml, XAML dosyası ve
  • App.xaml.cs, XAML dosyasıyla ilişkilendirilmiş bir C# arka planda kod dosyası.

Arka planda kod dosyasını görmek için App.xaml öğesinin yanındaki oka tıklamanız gerekir.

Hem App.xaml hem de App.xaml.cs öğesinden Applicationtüretilen adlı App bir sınıfa katkıda bulunur. XAML dosyalarına sahip diğer sınıfların çoğu, öğesinden ContentPagetüretilen bir sınıfa katkıda bulunur; bu dosyalar sayfanın tamamının görsel içeriğini tanımlamak için XAML kullanır. Bu, XamlSamples projesindeki diğer iki dosya için geçerlidir:

  • MainPage.xaml, XAML dosyası ve
  • MainPage.xaml.cs, C# arka planda kod dosyası.

MainPage.xaml dosyası şöyle görünür (biçimlendirme biraz farklı olsa da):

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XamlSamples"
             x:Class="XamlSamples.MainPage">

    <StackLayout>
        <!-- Place new controls here -->
        <Label Text="Welcome to Xamarin Forms!"
               VerticalOptions="Center"
               HorizontalOptions="Center" />
    </StackLayout>

</ContentPage>

İki XML ad alanı (xmlns) bildirimi, ilki Xamarin'in web sitesinde, ikincisi de Microsoft'un web sitesinde görünen URI'lere başvurur. Bu URI'lerin neyi işaret ediyor olduğunu kontrol etmeye zahmet etmeyin. Orada hiçbir şey yok. Bunlar yalnızca Xamarin ve Microsoft'a ait URI'lerdir ve temelde sürüm tanımlayıcıları olarak işlev görürler.

İlk XML ad alanı bildirimi, XAML dosyasında ön ek olmadan tanımlanan etiketlerin içindeki sınıflara Xamarin.Formsbaşvurması anlamına gelir. Örneğin ContentPage. İkinci ad alanı bildirimi, ön ekini xtanımlar. Bu, XAML'nin kendisine ait olan ve diğer XAML uygulamaları tarafından desteklenen birkaç öğe ve öznitelik için kullanılır. Ancak, bu öğeler ve öznitelikler URI'ye eklenen yıla bağlı olarak biraz farklıdır. Xamarin.Forms 2009 XAML belirtimini destekler, ancak tümünü desteklemez.

Ad local alanı bildirimi, .NET Standart kitaplık projesinden diğer sınıflara erişmenizi sağlar.

İlk etiketin sonunda, x ön ek adlı Classbir öznitelik için kullanılır. Bu x ön ekin kullanımı XAML ad alanı için neredeyse evrensel olduğundan, gibi Class XAML öznitelikleri neredeyse her zaman olarak x:Classadlandırılır.

x:Class özniteliği tam bir .NET sınıf adı belirtir: MainPage ad alanında XamlSamples sınıfı. Bu, bu XAML dosyasının, özniteliğin XamlSamples görüntülendiği etiketten ContentPagetüretilen ad alanında adlı MainPage yeni bir sınıf tanımladığı x:Class anlamına gelir.

x:Class özniteliği yalnızca türetilmiş bir C# sınıfı tanımlamak için bir XAML dosyasının kök öğesinde görünebilir. Bu, XAML dosyasında tanımlanan tek yeni sınıftır. XAML dosyasında görünen diğer her şey bunun yerine yalnızca mevcut sınıflardan örneği oluşturulur ve başlatılır.

MainPage.xaml.cs dosyası şöyle görünür (kullanılmayan using yönergelerin dışında):

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
    }
}

sınıfı MainPage öğesinden ContentPagetüretilir, ancak sınıf tanımına partial dikkat edin. Bu, için MainPagebaşka bir kısmi sınıf tanımı olması gerektiğini gösterir, ancak nerededir? Peki bu InitializeComponent yöntem nedir?

Visual Studio projeyi derlediğinde XAML dosyasını ayrıştırarak bir C# kod dosyası oluşturur. XamlSamples\XamlSamples\obj\Debug dizinine bakarsanız, XamlSamples.MainPage.xaml.g.cs adlı bir dosya bulursunuz. 'g' oluşturuldu anlamına gelir. Bu, oluşturucudan MainPage çağrılan yöntemin InitializeComponent tanımını içeren diğer kısmi sınıf tanımıdırMainPage. Bu iki kısmi MainPage sınıf tanımı birlikte derlenebilir. XAML'nin derlenip derlenmediğine bağlı olarak, XAML dosyası veya XAML dosyasının ikili biçimi yürütülebilir dosyaya eklenir.

Çalışma zamanında, belirli bir platform projesindeki kod bir LoadApplication yöntemi çağırır ve bu yönteme .NET Standard kitaplığındaki sınıfın App yeni bir örneğini geçirir. App Sınıf oluşturucu örneği oluştururMainPage. Bu sınıfın oluşturucusunun çağrısı InitializeComponent, daha sonra .NET Standard kitaplığından XAML dosyasını (veya derlenmiş ikili dosyasını) ayıklayan yöntemini çağırır LoadFromXaml . LoadFromXaml XAML dosyasında tanımlanan tüm nesneleri başlatır, hepsini üst-alt ilişkilerde birbirine bağlar, kodda tanımlanan olay işleyicilerini XAML dosyasında ayarlanan olaylara ekler ve nesnelerin sonuç ağacını sayfanın içeriği olarak ayarlar.

Normalde oluşturulan kod dosyalarıyla çok fazla zaman harcamanıza gerek olmasa da, bazen oluşturulan dosyalardaki kodda çalışma zamanı özel durumları oluşturulur, bu nedenle bunları bilmeniz gerekir.

Bu programı derleyip çalıştırdığınızda, Label öğe XAML'nin önerdiği gibi sayfanın ortasında görünür:

Varsayılan Xamarin.Forms görüntü

Daha ilginç görseller için tek ihtiyacınız olan daha ilginç XAML'dir.

Yeni XAML Sayfaları Ekleme

Projenize başka XAML tabanlı ContentPage sınıflar eklemek için XamlSamples .NET Standart kitaplık projesini seçin, sağ tıklayın ve Yeni Öğe Ekle...'yi > seçin. Yeni Öğe Ekle iletişim kutusunda Visual C# Öğeleri >Xamarin.Forms> İçerik Sayfası'nı (yalnızca kod içeren bir sayfa oluşturan İçerik Sayfası (C#) veya sayfa olmayan İçerik Görünümü'nü seçin. Sayfaya helloxamlpage gibi bir ad verin:

Yeni Öğe Ekle İletişim Kutusu

Projeye HelloXamlPage.xaml ve arka planda kod dosyası HelloXamlPage.xaml.cs olmak üzere iki dosya eklenir.

Sayfa İçeriğini Ayarlama

HelloXamlPage.xaml dosyasını, yalnızca ve ContentPage.Contentetiketleri ContentPage olacak şekilde düzenleyin:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamlSamples.HelloXamlPage">
    <ContentPage.Content>

    </ContentPage.Content>
</ContentPage>

Etiketler, ContentPage.Content XAML'nin benzersiz söz diziminin bir parçasıdır. İlk başta, geçersiz XML gibi görünebilirler, ancak yasaldırlar. Nokta, XML'de özel bir karakter değildir.

Etiketlere ContentPage.Content özellik öğesi etiketleri adı verilir. ContentContentPageözelliğidir ve genellikle tek bir görünüme veya alt görünümlere sahip bir düzene ayarlanır. Normalde özellikler XAML'de öznitelik haline gelir, ancak karmaşık bir Content nesneye öznitelik ayarlamak zor olabilir. Bu nedenle özellik, sınıf adından ve özellik adından oluşan bir XML öğesi olarak noktayla ayrılmış olarak ifade edilir. Content Artık özelliği etiketler arasında ContentPage.Content şu şekilde ayarlanabilir:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamlSamples.HelloXamlPage"
             Title="Hello XAML Page">
    <ContentPage.Content>

        <Label Text="Hello, XAML!"
               VerticalOptions="Center"
               HorizontalTextAlignment="Center"
               Rotation="-15"
               IsVisible="true"
               FontSize="Large"
               FontAttributes="Bold"
               TextColor="Blue" />

    </ContentPage.Content>
</ContentPage>

Kök etiketinde bir Title özniteliğin ayarlandığına da dikkat edin.

Şu anda sınıflar, özellikler ve XML arasındaki ilişki belirgin olmalıdır: Xamarin.Forms XAML dosyasında xml öğesi olarak bir sınıf (veya LabelgibiContentPage) görünür. Bu sınıfın özellikleri (on ContentPage ve yedi özelliği Labeldahil) Title genellikle XML öznitelikleri olarak görünür.

Bu özelliklerin değerlerini ayarlamak için birçok kısayol vardır. Bazı özellikler temel veri türleridir: Örneğin, Title ve özellikleri türündedir RotationStringDoubleve IsVisible (truevarsayılan olarak ve yalnızca çizim için burada ayarlanır) türündedirBoolean.Text

HorizontalTextAlignment özelliği, sabit listesi olan türündedirTextAlignment. Herhangi bir numaralandırma türünün özelliği için sağlamanız gereken tek şey üye adıdır.

Ancak daha karmaşık türlerin özellikleri için XAML ayrıştırma için dönüştürücüler kullanılır. Bunlar, içindeki Xamarin.Forms sınıfından TypeConvertertüretilen sınıflardır. Çoğu genel sınıftır, ancak bazıları değildir. Bu belirli XAML dosyası için bu sınıflardan birkaçı arka planda rol oynar:

  • LayoutOptionsConverterVerticalOptions özelliği için
  • FontSizeConverterFontSize özelliği için
  • ColorTypeConverterTextColor özelliği için

Bu dönüştürücüler özellik ayarlarının izin verilebilen söz dizimini yönetir.

virgülle ThicknessTypeConverter ayrılmış bir, iki veya dört sayıyı işleyebilir. Bir sayı sağlanırsa, dört taraf için de geçerlidir. İki sayı ile ilki sol ve sağ doldurma, ikincisi ise üst ve alttır. Dört sayı sol, üst, sağ ve alt sıradadır.

, LayoutOptionsConverter yapının genel statik alanlarının LayoutOptions adlarını türündeki LayoutOptionsdeğerlere dönüştürebilir.

bir FontSizeConverter üyeyi veya sayısal yazı tipi boyutunu işleyebilir NamedSize .

, ColorTypeConverter bir sayı işareti (#) ile veya alfa kanalı olmadan yapının genel statik alanlarının Color veya onaltılık RGB değerlerinin adlarını kabul eder. Alfa kanalı olmayan söz dizimi aşağıdadır:

TextColor="#rrggbb"

Küçük harflerin her biri onaltılık bir rakamdır. Alfa kanalının nasıl dahil olduğu aşağıda verilmiştir:

TextColor="#aarrggbb">

Alfa kanalı için FF'nin tamamen opak ve 00'in tamamen saydam olduğunu unutmayın.

Diğer iki biçim, her kanal için yalnızca tek bir onaltılık basamak belirtmenize olanak sağlar:

TextColor="#rgb" TextColor="#argb"

Bu gibi durumlarda, basamak değeri oluşturmak için yinelenir. Örneğin, CC-FF-33 RGB rengi #CF3.

XamlSamples programını çalıştırdığınızdaMainPage, görüntülenir. Yeniyi HelloXamlPage görmek için bunu App.xaml.cs dosyasındaki yeni başlangıç sayfası olarak ayarlayabilir veya uygulamasından MainPageyeni sayfaya gidebilirsiniz.

Gezintiyi uygulamak için önce App.xaml.cs oluşturucusunda bir NavigationPage nesne oluşturulacak şekilde kodu değiştirin:

public App()
{
    InitializeComponent();
    MainPage = new NavigationPage(new MainPage());
}

MainPage.xaml.cs oluşturucusunda basit Button bir oluşturabilir ve olay işleyicisini kullanarak adresine gidebilirsinizHelloXamlPage:

public MainPage()
{
    InitializeComponent();

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async (sender, args) =>
    {
        await Navigation.PushAsync(new HelloXamlPage());
    };

    Content = button;
}

Content Sayfanın özelliğinin ayarlanması, XAML dosyasındaki özelliğin Content ayarının yerini alır. Bu programın yeni sürümünü derleyip dağıttığınızda, ekranda bir düğme görüntülenir. Tuşuna basıldığında adresine HelloXamlPagegider. i Telefon, Android ve UWP'de sonuç sayfası aşağıdadır:

Döndürülmüş Etiket Metni

iOS'ta Geri düğmesini kullanarak<, Android'de sayfanın üst kısmındaki veya telefonun altındaki sol oku kullanarak veya Windows 10'da sayfanın üst kısmındaki sol oku kullanarak geri MainPage gidebilirsiniz.

işlemenin farklı yolları için XAML ile denemeler yapmaktan Labelçekinmeyin. Metne Unicode karakterleri eklemeniz gerekiyorsa, standart XML söz dizimini kullanabilirsiniz. Örneğin, karşılamayı akıllı tırnak içine almak için şunu kullanın:

<Label Text="&#x201C;Hello, XAML!&#x201D;" … />

Şöyle görünür:

Unicode Karakterli Döndürülmüş Etiket Metni

XAML ve Kod Etkileşimleri

HelloXamlPage örneği sayfada yalnızca bir tane Label içerir, ancak bu çok olağan dışıdır. Çoğu ContentPage türev, özelliğini gibi StackLayoutbir düzende ayarlarContent. Children öğesinin StackLayout özelliği türünde IList<View> olacak şekilde tanımlanır, ancak aslında türünde ElementCollection<View>bir nesnedir ve bu koleksiyon birden çok görünüm veya diğer düzenlerle doldurulabilir. XAML'de bu üst-alt ilişkiler normal XML hiyerarşisiyle oluşturulur. XamlPlusCodePage adlı yeni bir sayfa için bir XAML dosyası aşağıda verilmiştir:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamlSamples.XamlPlusCodePage"
             Title="XAML + Code Page">
    <StackLayout>
        <Slider VerticalOptions="CenterAndExpand" />

        <Label Text="A simple Label"
               Font="Large"
               HorizontalOptions="Center"
               VerticalOptions="CenterAndExpand" />

        <Button Text="Click Me!"
                HorizontalOptions="Center"
                VerticalOptions="CenterAndExpand" />
    </StackLayout>
</ContentPage>

Bu XAML dosyası bozulmadan tamamlanır ve şöyle görünür:

Sayfada Birden Çok Denetim

Ancak, bu programın işlevsel olarak yetersiz olduğunu düşünebilirsiniz. Slider geçerli değeri Button görüntülemesine Label neden olması ve büyük olasılıkla program içinde bir şey yapması amaçlanmıştır.

Bölüm 4'te göreceğiniz gibi. Veri Bağlama Temelleri, kullanarak Label bir Slider değer görüntüleme işi, veri bağlama ile tamamen XAML'de işlenebilir. Ancak önce kod çözümünü görmek yararlıdır. Yine de tıklamayı Button işlemek için kesinlikle kod gerekir. Bu, için XamlPlusCodePage arka planda kod dosyasının ve Clicked olayının ValueChangedSlider işleyicilerini içermesi Buttongerektiği anlamına gelir. Şimdi bunları ekleyelim:

namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage()
        {
            InitializeComponent();
        }

        void OnSliderValueChanged(object sender, ValueChangedEventArgs args)
        {

        }

        void OnButtonClicked(object sender, EventArgs args)
        {

        }
    }
}

Bu olay işleyicilerinin genel olması gerekmez.

XAML dosyasına geri döndüğünüzde ve Button etiketlerinin Slider şu işleyicilere başvuran ve Clicked olayları için ValueChanged öznitelikleri içermesi gerekir:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamlSamples.XamlPlusCodePage"
             Title="XAML + Code Page">
    <StackLayout>
        <Slider VerticalOptions="CenterAndExpand"
                ValueChanged="OnSliderValueChanged" />

        <Label Text="A simple Label"
               Font="Large"
               HorizontalOptions="Center"
               VerticalOptions="CenterAndExpand" />

        <Button Text="Click Me!"
                HorizontalOptions="Center"
                VerticalOptions="CenterAndExpand"
                Clicked="OnButtonClicked" />
    </StackLayout>
</ContentPage>

Bir olaya işleyici atamanın, bir özelliğe değer atamayla aynı söz dizimine sahip olduğuna dikkat edin.

olayının ValueChanged işleyicisi Slider geçerli değeri görüntülemek için öğesini Label kullanacaksa, işleyicinin koddan bu nesneye başvurması gerekir. Label özniteliğiyle x:Name belirtilen bir ad gerekir.

<Label x:Name="valueLabel"
       Text="A simple Label"
       Font="Large"
       HorizontalOptions="Center"
       VerticalOptions="CenterAndExpand" />

x özniteliğinin x:Name ön eki, bu özniteliğin XAML'ye ait olduğunu gösterir.

Özniteliğine x:Name atadığınız ad, C# değişken adları ile aynı kurallara sahiptir. Örneğin, bir harf veya alt çizgiyle başlamalı ve eklenmiş boşluk içermemelidir.

ValueChanged Artık olay işleyicisi öğesini yeni Slider değeri görüntüleyecek şekilde ayarlayabilirLabel. Yeni değer, olay bağımsız değişkenlerinden kullanılabilir:

void OnSliderValueChanged(object sender, ValueChangedEventArgs args)
{
    valueLabel.Text = args.NewValue.ToString("F3");
}

Öte yandan işleyici Slider , bağımsız değişkenden sender bu olayı oluşturan nesneyi alabilir ve özelliği şu öğeden alabilir Value :

void OnSliderValueChanged(object sender, ValueChangedEventArgs args)
{
    valueLabel.Text = ((Slider)sender).Value.ToString("F3");
}

Programı ilk kez çalıştırdığınızdaLabel, olay henüz tetiklenmediğinden değeri ValueChanged görüntülemezSlider. Ancak herhangi bir düzenleme Slider değerin görüntülenmesine neden olur:

Görüntülenen Kaydırıcı Değeri

Şimdi için Button. Şimdi düğmeyle Text bir uyarı görüntüleyerek bir Clicked olaya yanıt simülasyonu yapalım. Olay işleyicisi bağımsız değişkenini sender güvenli bir şekilde öğesine Button dönüştürebilir ve ardından özelliklerine erişebilir:

async void OnButtonClicked(object sender, EventArgs args)
{
    Button button = (Button)sender;
    await DisplayAlert("Clicked!",
        "The button labeled '" + button.Text + "' has been clicked",
        "OK");
}

yöntemi zaman uyumsuz olduğundan olarak asyncDisplayAlert tanımlanır ve yöntemi tamamlandığında döndüren işleciyle await önceden oluşturulmuş olması gerekir. Bu yöntem olayı bağımsız değişkenden sender tetiklediğindenButton, aynı işleyici birden çok düğme için kullanılabilir.

XAML'de tanımlanan bir nesnenin arka planda kod dosyasında işlenen bir olayı başlatabildiğini ve arka planda kod dosyasının özniteliğiyle x:Name kendisine atanan adı kullanarak XAML'de tanımlanan bir nesneye erişebildiğini gördünüz. Bunlar, kod ve XAML'nin etkileşim kurmasının iki temel yoludır.

XAML'nin nasıl çalıştığına ilişkin bazı ek içgörüler, artık özel alan olarak herhangi x:Name bir özniteliğe atanmış herhangi bir adı içeren yeni oluşturulan XamlPlusCode.xaml.g.cs dosyası incelenerek çözümlenebilir. Bu dosyanın basitleştirilmiş bir sürümü aşağıdadır:

public partial class XamlPlusCodePage : ContentPage {

    private Label valueLabel;

    private void InitializeComponent() {
        this.LoadFromXaml(typeof(XamlPlusCodePage));
        valueLabel = this.FindByName<Label>("valueLabel");
    }
}

Bu alanın bildirimi, değişkenin yetki alanınız altındaki kısmi sınıf dosyası içinde XamlPlusCodePage herhangi bir yerde serbestçe kullanılmasını sağlar. Çalışma zamanında, alan XAML ayrıştırıldıktan sonra atanır. Bu, valueLabel alanın oluşturucunun XamlPlusCodePage başladığı, ancak çağrıldıktan sonra InitializeComponent geçerli null olduğu anlamına gelir.

Denetimi oluşturucuya geri döndürdükten sonra InitializeComponent , sayfanın görselleri sanki kodda örneklenmiş ve başlatılmış gibi oluşturuldu. XAML dosyası artık sınıfında herhangi bir rol oynamaz. Sayfadaki bu nesneleri, örneğin görünümüne görünüm StackLayoutekleyerek veya sayfanın özelliğini tamamen başka bir şeye ayarlayarak Content istediğiniz şekilde değiştirebilirsiniz. Sayfanın özelliğini ve düzen koleksiyonlarındaki öğeleri inceleyerek Content "ağaçta Children gezinebilirsiniz". Bu şekilde erişilen görünümlerde özellikleri ayarlayabilir veya bunlara dinamik olarak olay işleyicileri atayabilirsiniz.

Rahat olun. Bu sizin sayfanız ve XAML yalnızca içeriğini oluşturmaya yönelik bir araçtır.

Özet

Bu giriş ile bir XAML dosyasının ve kod dosyasının sınıf tanımına nasıl katkıda olduğunu ve XAML ile kod dosyalarının nasıl etkileşime geçtiğini gördünüz. Ancak XAML ayrıca çok esnek bir şekilde kullanılmasını sağlayan kendi benzersiz söz dizimsel özelliklerine sahiptir. Bunları 2. Bölümde keşfetmeye başlayabilirsiniz. Temel XAML Söz Dizimi.