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:
- Buat BindableProperty instans dengan salah
CreateAttached
satu metode kelebihan beban. - Berikan
static
Get
metode PropertyName danSet
PropertyName 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 Get
dan Set
PropertyName diperlukan sebagai aksesor untuk properti terlampir, jika tidak, sistem properti tidak akan dapat menggunakan properti terlampir. Aksesor Get
PropertyName harus sesuai dengan tanda tangan berikut:
public static valueType GetPropertyName(BindableObject target)
Aksesor Get
PropertyName 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 Set
PropertyName harus sesuai dengan tanda tangan berikut:
public static void SetPropertyName(BindableObject target, valueType value)
Aksesor Set
PropertyName 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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk