DependencyProperty.UnsetValue Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt einen statischen Wert an, der vom Eigenschaftensystem verwendet wird, anstatt null
anzugeben, dass die Eigenschaft vorhanden ist, deren Wert jedoch nicht vom Eigenschaftensystem oder von einem App-Code festgelegt wird.
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
Eigenschaftswert
Der Sentinelwert für einen nicht festgelegten Wert.
Beispiele
In diesem Beispiel wird mit ReadLocalValue nach einem vorhandenen lokalen Wert gesucht. Wenn ein lokaler Wert vorhanden ist, wie durch keine Rückgabe UnsetValue
angegeben, wird der vorhandene lokale Wert entfernt, indem ClearValue aufgerufen wird.
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;
}
}
Hinweise
UnsetValue
ist ein Sentinelwert, der für Szenarien verwendet wird, in denen das Abhängigkeitseigenschaftensystem einen angeforderten Abhängigkeitseigenschaftswert nicht ermitteln kann. UnsetValue wird anstelle null
von verwendet, da null
ein gültiger Eigenschaftswert für die meisten Verweistypwerte ist und ein häufig verwendeter DefaultValue in Metadaten für eine Abhängigkeitseigenschaft ist.
UnsetValue
wird nie aus einem DependencyObject.GetValue-Aufruf zurückgegeben. Wenn Sie DependencyObject.GetValue für eine Abhängigkeitseigenschaft aufrufen, gilt immer eine der folgenden Bedingungen:
- Eine Abhängigkeitseigenschaft verfügt über einen Standardwert, der in den Metadaten festgelegt ist, und dieser Wert wird zurückgegeben. Dieser Wert kann aus dem DefaultValue-Wert der Eigenschaftsmetadaten stammen. Dies kann sein
null
. - Ein anderer Wert wurde über die Wertrangfolge festgelegt (z. B. wurde eine Formatvorlage angewendet oder eine Bindung wurde ausgewertet), und der Standardwert ist nicht mehr relevant. Obwohl dies speziell festgelegt ist, kann dies immer noch sein
null
. Weitere Informationen zur Wertrangfolge finden Sie unter Übersicht über Abhängigkeitseigenschaften.
DependencyObject.ReadLocalValue gibt zurück UnsetValue
, wenn die angeforderte Eigenschaft nicht lokal festgelegt wurde.
Hinweis
Registrieren Sie keine Abhängigkeitseigenschaft mit dem Standardwert .UnsetValue
Dies wird für Immobilienverbraucher verwirrend sein und unbeabsichtigte Folgen innerhalb des Eigenschaftensystems haben.
UnsetValue
sollte von einer IValueConverter-Implementierung zurückgegeben werden, die eine Konvertierung in einer Datenbindung in eine Abhängigkeitseigenschaft bereitstellt, in jedem Fall, wenn der Konverter keinen Quellwert konvertieren kann. Konverter sollten für diesen Fall in IValueConverter.Convert keine Ausnahmen auslösen. Diese werden als Laufzeitausnahmen angezeigt, für die Sie in UnhandledException eine Behandlung hinzufügen müssen oder noch schlimmer, den Benutzern als tatsächliche Laufzeitausnahme erscheinen. Konverterimplementierungen sollten dem allgemeinen Bindungsmuster folgen, dass jede fehlerhafte Bindung nichts bewirkt und keinen Wert bereitstellt, und UnsetValue
nicht null
der Sentinelwert für diesen Fall ist, den die Bindungs-Engine versteht. Weitere Informationen finden Sie unter Datenbindung im Detail.