DependencyProperty.UnsetValue Properti

Definisi

Menentukan nilai statis yang digunakan oleh sistem properti daripada null untuk 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;
    }
}
Public Shared Function ClearSetProperty(targetObject As DependencyObject, targetDP As DependencyProperty) As Boolean
    If targetObject Is Nothing Or targetDP Is Nothing Then
        Throw New ArgumentNullException()
    End If
    Dim localValue As Object = targetObject.ReadLocalValue(targetDP)
    If localValue = DependencyProperty.UnsetValue Then
        ClearSetProperty = False
    Else
        targetObject.ClearValue(targetDP)
        ClearSetProperty = True
    End If
End Function

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 adalah 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 masih null. Untuk informasi selengkapnya tentang prioritas nilai, lihat Gambaran umum properti dependensi.

DependencyObject.ReadLocalValue mengembalikan UnsetValue ketika properti yang diminta belum diatur secara lokal.

Catatan

Jangan daftarkan properti dependensi dengan nilai default UnsetValue. 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 konverter tidak dapat mengonversi nilai sumber. Pengonversi tidak boleh memberikan pengecualian untuk kasus tersebut di IValueConverter.Convert, ini akan muncul sebagai pengecualian run-time yang perlu Anda tambahkan penanganannya di UnhandledException atau lebih buruk lagi yang 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 daripada null adalah nilai sentinel untuk kasus itu yang dipahami mesin pengikatan. Untuk informasi selengkapnya, lihat Pengikatan data secara mendalam.

Berlaku untuk

Lihat juga