Bagikan melalui


DependencyProperty.UnsetValue Properti

Definisi

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

Object

Platform::Object

IInspectable

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 nullmasih . 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 UnsetValuedefault . 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.

Berlaku untuk

Lihat juga