Share via


DependencyProperty.UnsetValue Proprietà

Definizione

Specifica un valore statico utilizzato dal sistema delle proprietà anziché null indicare che la proprietà esiste, ma non ha il relativo valore impostato dal sistema delle proprietà o da qualsiasi codice dell'app.

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

Valore della proprietà

Object

Platform::Object

IInspectable

Valore sentinel per un valore unset.

Esempio

In questo esempio viene verificato un valore locale esistente con ReadLocalValue. Se esiste un valore locale, come indicato dalla mancata restituzione UnsetValuedi , il valore locale esistente viene rimosso chiamando 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;
    }
}

Commenti

UnsetValue è un valore sentinel usato per gli scenari in cui il sistema delle proprietà di dipendenza non è in grado di determinare un valore della proprietà di dipendenza richiesto. UnsetValue viene usato anziché null, perché null è un valore di proprietà valido per la maggior parte dei valori di tipo di riferimento ed è un valore DefaultValue usato di frequente nei metadati per una proprietà di dipendenza.

UnsetValue non viene mai restituito da una chiamata DependencyObject.GetValue . Quando si chiama DependencyObject.GetValue per una proprietà di dipendenza, una di queste condizioni è sempre true:

  • Una proprietà di dipendenza ha un valore predefinito stabilito nei metadati e tale valore viene restituito. Questo valore potrebbe derivare dal valore DefaultValue dei metadati della proprietà. Potrebbe trattarsi nulldi .
  • Alcuni altri valori sono stati stabiliti tramite la precedenza del valore (ad esempio è stato applicato uno stile o un'associazione è stata valutata) e il valore predefinito non è più pertinente. Anche se impostato in modo specifico, questo potrebbe comunque essere null. Per altre informazioni sulla precedenza del valore, vedere Panoramica delle proprietà di dipendenza.

DependencyObject.ReadLocalValue restituisce UnsetValue quando la proprietà richiesta non è stata impostata localmente.

Nota

Non registrare una proprietà di dipendenza con il valore predefinito di UnsetValue. Ciò confonderà i consumatori di proprietà e avrà conseguenze impreviste all'interno del sistema di proprietà.

UnsetValue deve essere restituito da un'implementazione IValueConverter che fornisce la conversione in un data binding in una proprietà di dipendenza, in qualsiasi caso in cui il convertitore non è in grado di convertire un valore di origine. I convertitori non devono generare eccezioni per questo caso in IValueConverter.Convert, queste verranno visualizzate come eccezioni in fase di esecuzione che è necessario aggiungere la gestione per in UnhandledException o peggio ancora appaiono agli utenti come eccezioni di runtime effettive. Le implementazioni del convertitore devono seguire il modello di associazione generale che qualsiasi associazione non riuscita non esegue nulla e non fornisce un valore e UnsetValue anziché null è il valore sentinel per tale caso che il motore di associazione capisce. Per altre info, vedi Informazioni approfondite sul data binding.

Si applica a

Vedi anche