Aracılığıyla paylaş


Genel Tanımlar/Jenerik İlaçlar

.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) XAML, genel kısıtlamaları tür bağımsız değişkenleri olarak belirterek genel CLR türlerini kullanma desteği sağlar. Bu destek, bir genelin kısıtlayıcı tür bağımsız değişkenlerini, genel türün oluşturucusuna geçiren x:TypeArguments yönergesi tarafından sağlanır.

Tür bağımsız değişkenleri bir dize olarak belirtilir ve genellikle sys:String ve sys:Int32gibi öneklerle belirtilir. CLR'nin tipik genel kısıtlama türleri, varsayılan .NET MAUI ad alanlarına eşlenmeyen kütüphanelerden geldiği için öneklendirme gereklidir. Ancak, x:String ve x:Int32gibi XAML 2009 yerleşik türleri de tür bağımsız değişkenleri olarak belirtilebilir; burada x XAML 2009 için XAML dil ad alanıdır. XAML 2009 yerleşik türleri hakkında daha fazla bilgi için bkz. XAML 2009 Dil Temel Bilgileri.

Önemli

.NET MAUI XAML'de x:TypeArguments yönergesi ile genel türlerin tanımlanması desteklenmez.

Birden çok tür bağımsız değişkeni virgül sınırlayıcı kullanılarak belirtilebilir. Ayrıca, genel bir kısıtlama genel türler kullanıyorsa, iç içe kısıtlama türü bağımsız değişkenleri parantez içinde bulunmalıdır.

Not

x:Type işaretleme uzantısı, genel bir tür için Ortak Dil Çalışma Zamanı (CLR) türü başvurusu sağlar ve C# içindeki typeof işlecine benzer bir işleve sahiptir. Daha fazla bilgi için bkz. x:Type biçimlendirme uzantısı.

.NET MAUI XAML'de x:DataType ve x:Type yönergeleriyle genel türler belirtme hakkında bilgi için bkz. genel tür belirten derleme bağlamaları ve x:Type işaretleme uzantısı.

Tek temel tür bağımsız değişkeni

Tek bir ilkel tür argümanı, x:TypeArguments yönergesini kullanarak ön ekli bir dize argümanı şeklinde belirtilebilir.

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:scg="clr-namespace:System.Collections.Generic;assembly=netstandard"
             ...>
    <CollectionView>
        <CollectionView.ItemsSource>
            <scg:List x:TypeArguments="x:String">
                <x:String>Baboon</x:String>
                <x:String>Capuchin Monkey</x:String>
                <x:String>Blue Monkey</x:String>
                <x:String>Squirrel Monkey</x:String>
                <x:String>Golden Lion Tamarin</x:String>
                <x:String>Howler Monkey</x:String>
                <x:String>Japanese Macaque</x:String>
            </scg:List>
        </CollectionView.ItemsSource>
    </CollectionView>
</ContentPage>

Bu örnekte, System.Collections.Genericscg XAML ad alanı olarak tanımlanır. CollectionView.ItemsSource özelliği, XAML 2009 yerleşik x:String türü kullanılarak string türü bağımsız değişkeniyle oluşturulmuş bir List<T>'e ayarlandı. List<string> koleksiyonu birden çok string öğesiyle başlatılır.

Alternatif olarak, ancak eşdeğer olarak, List<T> koleksiyonu CLR String türüyle örneklenebilir:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:scg="clr-namespace:System.Collections.Generic;assembly=netstandard"
             xmlns:sys="clr-namespace:System;assembly=netstandard"
             ...>
    <CollectionView>
        <CollectionView.ItemsSource>
            <scg:List x:TypeArguments="sys:String">
                <sys:String>Baboon</sys:String>
                <sys:String>Capuchin Monkey</sys:String>
                <sys:String>Blue Monkey</sys:String>
                <sys:String>Squirrel Monkey</sys:String>
                <sys:String>Golden Lion Tamarin</sys:String>
                <sys:String>Howler Monkey</sys:String>
                <sys:String>Japanese Macaque</sys:String>
            </scg:List>
        </CollectionView.ItemsSource>
    </CollectionView>
</ContentPage>

Tek nesne türü bağımsız değişkeni

Tek bir nesne türü bağımsız değişkeni, x:TypeArguments yönergesi kullanılarak ön ekli dize bağımsız değişkeni olarak belirtilebilir:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:models="clr-namespace:GenericsDemo.Models"
             xmlns:scg="clr-namespace:System.Collections.Generic;assembly=netstandard"
             ...>
    <CollectionView>
        <CollectionView.ItemsSource>
            <scg:List x:TypeArguments="models:Monkey">
                <models:Monkey Name="Baboon"
                               Location="Africa and Asia"
                               ImageUrl="https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_%28Serengeti%2C_2009%29.jpg/200px-Papio_anubis_%28Serengeti%2C_2009%29.jpg" />
                <models:Monkey Name="Capuchin Monkey"
                               Location="Central and South America"
                               ImageUrl="https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Capuchin_Costa_Rica.jpg/200px-Capuchin_Costa_Rica.jpg" />
                <models:Monkey Name="Blue Monkey"
                               Location="Central and East Africa"
                               ImageUrl="https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/BlueMonkey.jpg/220px-BlueMonkey.jpg" />
            </scg:List>
        </CollectionView.ItemsSource>
        <CollectionView.ItemTemplate>
            <DataTemplate x:DataType="models:Monkey">
                <Grid Padding="10">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Image Grid.RowSpan="2"
                           Source="{Binding ImageUrl}"
                           Aspect="AspectFill"
                           HeightRequest="60"
                           WidthRequest="60" />
                    <Label Grid.Column="1"
                           Text="{Binding Name}"
                           FontAttributes="Bold" />
                    <Label Grid.Row="1"
                           Grid.Column="1"
                           Text="{Binding Location}"
                           FontAttributes="Italic"
                           VerticalOptions="End" />
                </Grid>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>
</ContentPage>

Bu örnekte, GenericsDemo.Modelsmodels XAML ad alanı olarak tanımlanır ve System.Collections.Genericscg XAML ad alanı olarak tanımlanır. CollectionView.ItemsSource özelliği, Monkey türü bağımsız değişkeniyle oluşturulmuş bir List<T> olarak ayarlanır. List<Monkey> koleksiyonu birden çok Monkey öğesiyle başlatılır ve her Monkey nesnesinin görünümünü tanımlayan bir DataTemplate, CollectionView'ün ItemTemplate'ü olarak ayarlanır.

Birden çok tür bağımsız değişkeni

Birden çok tür bağımsız değişkeni, x:TypeArguments yönergesi kullanılarak virgülle ayrılmış ön ekli dize bağımsız değişkenleri olarak belirtilebilir. Genel bir kısıtlama genel türler kullandığında, iç içe geçmiş kısıtlama türünün bağımsız değişkenleri parantez içine alınır.

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:models="clr-namespace:GenericsDemo.Models"
             xmlns:scg="clr-namespace:System.Collections.Generic;assembly=netstandard"
             ...>
    <CollectionView>
        <CollectionView.ItemsSource>
            <scg:List x:TypeArguments="scg:KeyValuePair(x:String,models:Monkey)">
                <scg:KeyValuePair x:TypeArguments="x:String,models:Monkey">
                    <x:Arguments>
                        <x:String>Baboon</x:String>
                        <models:Monkey Location="Africa and Asia"
                                       ImageUrl="https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_%28Serengeti%2C_2009%29.jpg/200px-Papio_anubis_%28Serengeti%2C_2009%29.jpg" />
                    </x:Arguments>
                </scg:KeyValuePair>
                <scg:KeyValuePair x:TypeArguments="x:String,models:Monkey">
                    <x:Arguments>
                        <x:String>Capuchin Monkey</x:String>
                        <models:Monkey Location="Central and South America"
                                       ImageUrl="https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Capuchin_Costa_Rica.jpg/200px-Capuchin_Costa_Rica.jpg" />   
                    </x:Arguments>
                </scg:KeyValuePair>
                <scg:KeyValuePair x:TypeArguments="x:String,models:Monkey">
                    <x:Arguments>
                        <x:String>Blue Monkey</x:String>
                        <models:Monkey Location="Central and East Africa"
                                       ImageUrl="https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/BlueMonkey.jpg/220px-BlueMonkey.jpg" />
                    </x:Arguments>
                </scg:KeyValuePair>
            </scg:List>
        </CollectionView.ItemsSource>
        <CollectionView.ItemTemplate>
            <DataTemplate x:DataType="scg:KeyValuePair(x:String,models:Monkey)">
                <Grid Padding="10">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Image Grid.RowSpan="2"
                           Source="{Binding Value.ImageUrl}"
                           Aspect="AspectFill"
                           HeightRequest="60"
                           WidthRequest="60" />
                    <Label Grid.Column="1"
                           Text="{Binding Key}"
                           FontAttributes="Bold" />
                    <Label Grid.Row="1"
                           Grid.Column="1"
                           Text="{Binding Value.Location}"
                           FontAttributes="Italic"
                           VerticalOptions="End" />
                </Grid>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>
</ContentPage    

Bu örnekte, GenericsDemo.Modelsmodels XAML ad alanı olarak tanımlanır ve System.Collections.Genericscg XAML ad alanı olarak tanımlanır. CollectionView.ItemsSource özelliği, string ve Monkeyiç kısıtlama türü bağımsız değişkenlerine sahip KeyValuePair<TKey, TValue> kısıtlaması ile örneklenen bir List<T> olarak ayarlanır. List<KeyValuePair<string,Monkey>> koleksiyonu, varsayılan olmayan KeyValuePair oluşturucu kullanılarak birden çok KeyValuePair öğesiyle başlatılır. Her Monkey nesnesinin görünümünü tanımlayan bir DataTemplate ise, CollectionView'nın ItemTemplate'i olarak ayarlanır. Bağımsız değişkenleri varsayılan olmayan bir oluşturucuya geçirme hakkında bilgi için bkz. oluşturucuya bağımsız değişken geçirme.