DependencyProperty.UnsetValue Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan nilai statis yang digunakan oleh sistem properti daripada null
menunjukkan bahwa properti ada, tetapi tidak memiliki nilai yang ditetapkan oleh sistem properti atau oleh kode aplikasi apa pun.
public:
static property Platform::Object ^ UnsetValue { Platform::Object ^ get(); };
static IInspectable UnsetValue();
public static object UnsetValue { get; }
var object = DependencyProperty.unsetValue;
Public Shared ReadOnly Property UnsetValue As Object
Nilai Properti
Nilai sentinel untuk nilai yang tidak diatur.
Contoh
Contoh ini memeriksa nilai lokal yang ada dengan ReadLocalValue. Jika ada nilai lokal, seperti yang ditunjukkan dengan tidak mengembalikan UnsetValue
, maka nilai lokal yang ada dihapus dengan memanggil ClearValue.
public static bool ClearSetProperty(DependencyObject targetObject, DependencyProperty targetDP)
{
if (targetObject == null || targetDP == null)
{
throw new ArgumentNullException();
}
object localValue = targetObject.ReadLocalValue(targetDP);
if (localValue == DependencyProperty.UnsetValue)
{
return false;
}
else
{
targetObject.ClearValue(targetDP);
return true;
}
}
Keterangan
UnsetValue
adalah nilai sentinel yang digunakan untuk skenario di mana sistem properti dependensi tidak dapat menentukan nilai properti dependensi yang diminta. UnsetValue digunakan daripada null
, karena null
merupakan nilai properti yang valid untuk sebagian besar nilai jenis referensi, dan merupakan DefaultValue yang sering digunakan dalam metadata untuk properti dependensi.
UnsetValue
tidak pernah dikembalikan dari panggilan DependencyObject.GetValue . Saat Anda memanggil DependencyObject.GetValue untuk properti dependensi, salah satu kondisi ini selalu benar:
- Properti dependensi memiliki nilai default yang ditetapkan dalam metadata dan nilai tersebut dikembalikan. Nilai ini mungkin berasal dari DefaultValue metadata properti. Ini mungkin
null
. - Beberapa nilai lain ditetapkan melalui prioritas nilai (misalnya gaya diterapkan, atau Pengikatan dievaluasi), dan nilai default tidak lagi relevan. Meskipun secara khusus diatur, ini mungkin
null
masih . Untuk informasi selengkapnya tentang prioritas nilai, lihat Gambaran umum properti dependensi.
DependencyObject.ReadLocalValue kembali UnsetValue
ketika properti yang diminta belum diatur secara lokal.
Catatan
Jangan daftarkan properti dependensi dengan nilai UnsetValue
default . Ini akan membingungkan bagi konsumen properti dan akan memiliki konsekuensi yang tidak diinginkan dalam sistem properti.
UnsetValue
harus dikembalikan dari implementasi IValueConverter yang menyediakan konversi dalam pengikatan data ke properti dependensi, dalam hal apa pun di mana pengonversi tidak dapat mengonversi nilai sumber. Konverter tidak boleh melemparkan pengecualian untuk kasus tersebut di IValueConverter.Convert, ini akan muncul sebagai pengecualian run-time yang perlu Anda tambahkan penanganannya di UnhandledException atau yang lebih buruk namun muncul kepada pengguna sebagai pengecualian run-time aktual. Implementasi pengonversi harus mengikuti pola pengikatan umum bahwa setiap pengikatan yang gagal tidak melakukan apa pun dan tidak memberikan nilai, dan UnsetValue
bukan null
nilai sentinel untuk kasus itu yang dipahami mesin pengikatan. Untuk informasi selengkapnya, lihat Pengikatan data secara mendalam.