Bagikan melalui


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. ColorKonstruktor dengan satu parameter memerlukan nilai skala abu-abu dari 0 (hitam) hingga 1 (putih). ColorKonstruktor dengan tiga parameter membutuhkan nilai merah, hijau, dan biru mulai dari 0 hingga 1. ColorKonstruktor dengan empat parameter menambahkan saluran alfa sebagai parameter keempat.

Cuplikan layar berikut menunjukkan hasil panggilan setiap Color konstruktor dengan nilai argumen yang ditentukan:

BoxView.Color ditentukan dengan x:Argumen

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:

BoxView.Color ditentukan dengan x:FactoryMethod dan x:Argumen

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 Thicknessplatform .

Untuk informasi selengkapnya tentang argumen jenis generik, lihat Generik di Xamarin.Forms XAML.