Meneruskan Argumen di XAML
Artikel ini menunjukkan penggunaan atribut XAML yang dapat digunakan untuk meneruskan argumen ke konstruktor non-default, untuk memanggil metode pabrik, dan untuk menentukan jenis argumen generik.
Gambaran Umum
Seringkali perlu untuk membuat instans objek dengan konstruktor yang memerlukan argumen, atau dengan memanggil metode pembuatan statis. Ini dapat dicapai di XAML dengan menggunakan x:Arguments
atribut dan x:FactoryMethod
:
- Atribut
x:Arguments
digunakan untuk menentukan argumen konstruktor untuk konstruktor non-default, atau untuk deklarasi objek metode pabrik. Untuk informasi selengkapnya, lihat Meneruskan Argumen Konstruktor. - Atribut
x:FactoryMethod
digunakan untuk menentukan metode pabrik yang dapat digunakan untuk menginisialisasi objek. Untuk informasi selengkapnya, lihat Memanggil Metode Pabrik.
Selain itu, x:TypeArguments
atribut dapat digunakan untuk menentukan argumen jenis generik ke konstruktor jenis generik. Untuk informasi selengkapnya, lihat Menentukan Argumen Jenis Generik.
Meneruskan Argumen Konstruktor
Argumen dapat diteruskan ke konstruktor non-default menggunakan x:Arguments
atribut . Setiap argumen konstruktor harus dibatasi dalam elemen XML yang mewakili jenis argumen. Xamarin.Forms mendukung elemen berikut untuk jenis dasar:
x:Array
x:Boolean
x:Byte
x:Char
x:DateTime
x:Decimal
x:Double
x:Int16
x:Int32
x:Int64
x:Object
x:Single
x:String
x:TimeSpan
Contoh kode berikut menunjukkan menggunakan x:Arguments
atribut dengan tiga Color
konstruktor:
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.9</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.25</x:Double>
<x:Double>0.5</x:Double>
<x:Double>0.75</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.8</x:Double>
<x:Double>0.5</x:Double>
<x:Double>0.2</x:Double>
<x:Double>0.5</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
Jumlah elemen dalam x:Arguments
tag, dan jenis elemen ini, harus cocok dengan Color
salah satu konstruktor. Color
Konstruktor dengan satu parameter memerlukan nilai skala abu-abu dari 0 (hitam) hingga 1 (putih). Color
Konstruktor dengan tiga parameter membutuhkan nilai merah, hijau, dan biru mulai dari 0 hingga 1. Color
Konstruktor dengan empat parameter menambahkan saluran alfa sebagai parameter keempat.
Cuplikan layar berikut menunjukkan hasil panggilan setiap Color
konstruktor dengan nilai argumen yang ditentukan:
Metode Calling Factory
Metode pabrik dapat dipanggil di XAML dengan menentukan nama metode menggunakan x:FactoryMethod
atribut , dan argumennya menggunakan x:Arguments
atribut . Metode pabrik adalah public static
metode yang mengembalikan objek atau nilai dengan jenis yang sama dengan kelas atau struktur yang menentukan metode.
Struktur Color
mendefinisikan sejumlah metode pabrik, dan contoh kode berikut menunjukkan panggilan tiga di antaranya:
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromRgba">
<x:Arguments>
<x:Int32>192</x:Int32>
<x:Int32>75</x:Int32>
<x:Int32>150</x:Int32>
<x:Int32>128</x:Int32>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromHsla">
<x:Arguments>
<x:Double>0.23</x:Double>
<x:Double>0.42</x:Double>
<x:Double>0.69</x:Double>
<x:Double>0.7</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromHex">
<x:Arguments>
<x:String>#FF048B9A</x:String>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
Jumlah elemen dalam x:Arguments
tag, dan jenis elemen ini, harus cocok dengan argumen metode pabrik yang dipanggil. Metode FromRgba
pabrik memerlukan empat Int32
parameter, yang mewakili nilai merah, hijau, biru, dan alfa, masing-masing berkisar antara 0 hingga 255. Metode FromHsla
pabrik memerlukan empat Double
parameter, yang mewakili nilai hue, saturasi, luminositas, dan alfa, masing-masing berkisar antara 0 hingga 1. Metode FromHex
pabrik memerlukan String
yang mewakili warna heksadesimal (A)RGB.
Cuplikan layar berikut menunjukkan hasil panggilan setiap Color
metode pabrik dengan nilai argumen yang ditentukan:
Menentukan Argumen Tipe Generik
Argumen jenis generik untuk konstruktor jenis generik dapat ditentukan menggunakan x:TypeArguments
atribut , seperti yang ditunjukkan dalam contoh kode berikut:
<ContentPage ...>
<StackLayout>
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android" Value="5, 10" />
<On Platform="UWP" Value="10" />
</OnPlatform>
</StackLayout.Margin>
</StackLayout>
</ContentPage>
Kelas OnPlatform
adalah kelas generik dan harus dibuat dengan atribut yang cocok dengan x:TypeArguments
jenis target. On
Di kelas , Platform
atribut dapat menerima satu string
nilai, atau beberapa nilai yang dibatasi string
koma. Dalam contoh ini, StackLayout.Margin
properti diatur ke khusus Thickness
platform .
Untuk informasi selengkapnya tentang argumen jenis generik, lihat Generik di Xamarin.Forms XAML.