Genel Türler
.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 x:TypeArguments
kısıtlayıcı tür bağımsız değişkenlerini genel türün oluşturucusna geçiren yönergesi tarafından sağlanır.
Tür bağımsız değişkenleri bir dize olarak belirtilir ve genellikle ve sys:Int32
gibi sys:String
ön ekleri eklenir. Tipik CLR genel kısıtlama türleri varsayılan .NET MAUI ad alanlarına eşlenmeyen kitaplıklardan geldiğinden önek gereklidir. Ancak, ve x:Int32
gibi x:String
XAML 2009 yerleşik türleri, XAML 2009 için XAML dili ad alanı olan x
tür bağımsız değişkenleri olarak da belirtilebilir. XAML 2009 yerleşik türleri hakkında daha fazla bilgi için bkz . XAML 2009 Dil Temel Bilgileri.
Önemli
yönergesiyle .NET MAUI XAML'de genel sınıfların x:TypeArguments
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
biçimlendirme x:Type
uzantısı, genel bir tür için Ortak Dil Çalışma Zamanı (CLR) türü başvurusu sağlar ve C# içindeki işleçle benzer bir işleve typeof
sahiptir. Daha fazla bilgi için bkz . x:Type işaretleme uzantısı.
Tek bir ilkel tür bağımsız değişkeni, yönergesi x:TypeArguments
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: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.Generic
XAML ad alanı olarak scg
tanımlanır. CollectionView.ItemsSource
özelliği, XAML 2009 yerleşik x:String
türü kullanılarak tür bağımsız değişkeniyle örneklenen bir string
değerine ayarlanırList<T>
. Koleksiyon List<string>
birden çok string
öğeyle başlatılır.
Alternatif olarak, ancak eşdeğer olarak, koleksiyonun List<T>
örneği CLR String
türüyle oluşturulabilir:
<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 bir nesne türü bağımsız değişkeni, şu yönerge kullanılarak x:TypeArguments
ö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>
<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.Models
XAML ad alanı olarak models
tanımlanır ve System.Collections.Generic
XAML ad alanı olarak scg
tanımlanır. CollectionView.ItemsSource
özelliği, tür List<T>
bağımsız değişkeniyle örneklene bir Monkey
olarak ayarlanır. Koleksiyon List<Monkey>
birden çok Monkey
öğeyle başlatılır ve her Monkey
nesnenin görünümünü tanımlayan bir DataTemplate
öğesi olarak ItemTemplate
CollectionViewayarlanır.
Birden çok tür bağımsız değişkeni, yönergesi kullanılarak x:TypeArguments
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 kısıtlama türü bağımsız değişkenleri parantez içinde bulunur:
<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>
<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.Models
XAML ad alanı olarak models
tanımlanır ve System.Collections.Generic
XAML ad alanı olarak scg
tanımlanır. CollectionView.ItemsSource
özelliği, iç kısıtlama türü bağımsız değişkenleri string
ve Monkey
ile bir KeyValuePair<TKey, TValue>
kısıtlama ile örnek olarak ayarlanmıştırList<T>
. Koleksiyon, varsayılan olmayan oluşturucu kullanılarak birden çok KeyValuePair
öğeyle başlatılır ve her Monkey
nesnenin görünümünü tanımlayan bir DataTemplate
öğesi olarak ayarlanır ItemTemplate
CollectionView.KeyValuePair
List<KeyValuePair<string,Monkey>>
Bağımsız değişkenleri varsayılan olmayan bir oluşturucuya geçirme hakkında bilgi için bkz . Oluşturucu bağımsız değişkenlerini geçirme.