Bagikan melalui


Properti terlampir

Properti terlampir .NET Multi-platform App UI (.NET MAUI) memungkinkan objek untuk menetapkan nilai untuk properti yang tidak ditentukan kelasnya sendiri. Misalnya, elemen anak dapat menggunakan properti terlampir untuk menginformasikan elemen induk mereka tentang bagaimana elemen tersebut disajikan di antarmuka pengguna. Tata Grid letak memungkinkan baris dan kolom anak ditentukan dengan mengatur properti terlampir Grid.Row dan Grid.Column . Grid.Row dan Grid.Column merupakan properti terlampir karena diatur pada elemen yang merupakan turunan dari Grid, bukan pada dirinya Grid sendiri.

Properti yang dapat diikat harus diimplementasikan sebagai properti terlampir dalam skenario berikut:

  • Ketika ada kebutuhan untuk memiliki mekanisme pengaturan properti yang tersedia untuk kelas selain kelas yang menentukan.
  • Ketika kelas mewakili layanan yang perlu dengan mudah diintegrasikan dengan kelas lain.

Untuk informasi selengkapnya tentang properti yang dapat diikat, lihat Properti yang dapat diikat.

Membuat properti terlampir

Proses untuk membuat properti terlampir adalah sebagai berikut:

  1. Buat BindableProperty instans dengan salah CreateAttached satu metode kelebihan beban.
  2. Berikan staticGetmetode PropertyName dan SetPropertyName sebagai aksesor untuk properti terlampir.

Membuat properti

Saat membuat properti terlampir untuk digunakan pada jenis lain, kelas tempat properti dibuat tidak harus berasal dari BindableObject. Namun, properti target untuk aksesor harus dari, atau berasal dari, BindableObject. Untuk informasi selengkapnya tentang properti target, lihat Pengikatan dasar.

Properti terlampir dapat dibuat dengan mendeklarasikan public static readonly properti jenis BindableProperty. Properti yang dapat diikat harus diatur ke nilai yang dikembalikan dari salah BindableProperty.CreateAttached satu metode kelebihan beban. Deklarasi harus berada dalam isi kelas pemilik, tetapi di luar definisi anggota apa pun.

Penting

Konvensi penamaan untuk properti terlampir adalah bahwa pengidentifikasi properti terlampir harus cocok dengan nama properti yang ditentukan dalam CreateAttached metode , dengan "Properti" ditambahkan ke dalamnya.

Kode berikut menunjukkan contoh properti terlampir:

public class MyControl
{
    public static readonly BindableProperty HasShadowProperty =
        BindableProperty.CreateAttached("HasShadow", typeof(bool), typeof(MyControl), false);
}

Ini membuat properti terlampir bernama HasShadowProperty, dari jenis bool. Properti dimiliki oleh MyControl kelas , dan memiliki nilai default .false Kepemilikan, dalam hal ini, berarti bahwa properti akan diakses di XAML menggunakan format Type.Property, misalnya MyControl.HasShadow.

Untuk informasi selengkapnya tentang membuat properti yang dapat diikat, termasuk parameter yang dapat ditentukan selama pembuatan, lihat Membuat properti yang dapat diikat.

Membuat aksesor

Metode PropertyName statis Getdan SetPropertyName diperlukan sebagai aksesor untuk properti terlampir, jika tidak, sistem properti tidak akan dapat menggunakan properti terlampir. Aksesor GetPropertyName harus sesuai dengan tanda tangan berikut:

public static valueType GetPropertyName(BindableObject target)

Aksesor GetPropertyName harus mengembalikan nilai yang terkandung di bidang terkait BindableProperty untuk properti terlampir. Ini dapat dicapai dengan memanggil GetValue metode , meneruskan pengidentifikasi properti yang dapat diikat untuk mendapatkan nilai, lalu mentransmisikan nilai yang dihasilkan ke jenis yang diperlukan.

Aksesor SetPropertyName harus sesuai dengan tanda tangan berikut:

public static void SetPropertyName(BindableObject target, valueType value)

Aksesor SetPropertyName harus mengatur nilai bidang terkait BindableProperty untuk properti terlampir. Ini dapat dicapai dengan memanggil SetValue metode , meneruskan pengidentifikasi properti yang dapat diikat untuk mengatur nilai, dan nilai yang akan diatur.

Untuk kedua aksesor, objek target harus dari, atau berasal dari, BindableObject. Untuk informasi selengkapnya tentang objek target, lihat Pengikatan dasar.

Contoh kode berikut menunjukkan aksesor untuk HasShadow properti terlampir:

public class MyControl
{
    public static bool GetHasShadow(BindableObject view)
    {
        return (bool)view.GetValue (HasShadowProperty);
    }

    public static void SetHasShadow(BindableObject view, bool value)
    {
        view.SetValue(HasShadowProperty, value);
    }  
}

Menggunakan properti terlampir

Setelah properti terlampir dibuat, properti dapat dikonsumsi dari XAML atau kode. Di XAML, ini dicapai dengan mendeklarasikan namespace dengan awalan, dengan deklarasi namespace yang menunjukkan nama namespace Common Language Runtime (CLR), dan secara opsional nama rakitan. Untuk informasi selengkapnya, lihat Namespace XAML.

Contoh berikut menunjukkan namespace XAML untuk jenis kustom yang berisi properti terlampir, yang didefinisikan dalam rakitan yang sama dengan kode aplikasi yang merujuk pada jenis kustom:

<ContentPage ... xmlns:local="clr-namespace:ShadowDemo" ...>
  ...
</ContentPage>

Deklarasi namespace layanan kemudian digunakan saat mengatur properti terlampir pada kontrol tertentu, seperti yang ditunjukkan dalam XAML berikut:

<Label Text="Label with shadow" local:MyControl.HasShadow="true" />

Kode C# yang setara ditampilkan dalam contoh kode berikut:

Label label = new Label { Text = "Label with shadow" };
MyControl.SetHasShadow (label, true);

Menggunakan properti terlampir dengan gaya

Properti terlampir juga dapat ditambahkan ke kontrol oleh gaya. Contoh kode XAML berikut menunjukkan gaya eksplisit untuk Label kontrol yang menggunakan HasShadow properti terlampir:

<Style x:Key="ShadowStyle" TargetType="Label">
  <Style.Setters>
    <Setter Property="local:MyControl.HasShadow" Value="true" />
  </Style.Setters>
</Style>

Style dapat diterapkan ke a Label dengan mengatur propertinya Style ke Style instans menggunakan StaticResource ekstensi markup, seperti yang ditunjukkan dalam contoh kode berikut:

<Label Text="Label with shadow" Style="{StaticResource ShadowStyle}" />

Untuk informasi selengkapnya tentang gaya, lihat Gaya.

Skenario tingkat lanjut

Saat membuat properti terlampir, ada beberapa parameter opsional yang dapat diatur untuk mengaktifkan skenario properti terlampir tingkat lanjut. Ini termasuk mendeteksi perubahan properti, memvalidasi nilai properti, dan nilai properti koercing. Untuk informasi selengkapnya, lihat Skenario tingkat lanjut.