DependencyProperty.UnsetValue Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
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 UnsetValue
di , 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
null
di . - 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.