Share via


DependencyProperty.UnsetValue Eigenschaft

Definition

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

Object

Platform::Object

IInspectable

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 UnsetValueangegeben, 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 nullvon 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.

Gilt für:

Weitere Informationen