DependencyProperty.UnsetValue Eigenschaft

Definition

Gibt einen statischen Wert an, der vom Eigenschaftensystem anstelle von NULL verwendet wird, um 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 definierten Wert.

Beispiele

In diesem Beispiel wird mit ReadLocalValue nach einem vorhandenen lokalen Wert gesucht. Wenn ein lokaler Wert vorhanden ist, wie durch nicht zurückgegebene 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;
    }
}
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

Hinweise

UnsetValue ist ein Sentinelwert, der für Szenarien verwendet wird, in denen das Abhängigkeitseigenschaftssystem keinen angeforderten Abhängigkeitseigenschaftswert ermitteln kann. UnsetValue wird anstelle von NULL verwendet, da NULL ein gültiger Eigenschaftswert für die meisten Verweistypwerte ist und ein häufig in Metadaten für eine Abhängigkeitseigenschaft verwendete DefaultValue 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 der DefaultValue-Eigenschaft der Eigenschaftenmetadaten stammen. Dies kann NULL sein.
  • Ein anderer Wert wurde über die Wertrangfolge festgelegt (z. B. wurde eine Formatvorlage angewendet oder eine Bindung ausgewertet), und der Standardwert ist nicht mehr relevant. Auch wenn dies speziell festgelegt ist, kann dies trotzdem NULL sein. Weitere Informationen zur Wertrangfolge finden Sie unter Übersicht über Abhängigkeitseigenschaften.

DependencyObject.ReadLocalValue gibt UnsetValue zurück, 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 keine Ausnahmen für diesen Fall in IValueConverter.Convert auslösen. Diese werden als Laufzeitausnahmen angezeigt, die Sie in UnhandledException oder schlimmer noch als tatsächliche Laufzeitausnahme hinzufügen müssen. Konverterimplementierungen sollten dem allgemeinen Bindungsmuster folgen, dass jede fehlerhafte Bindung nichts bewirkt und keinen Wert bereitstellt, und UnsetValue anstelle von NULL ist der Sentinelwert für diesen Fall, den das Bindungsmodul versteht. Weitere Informationen finden Sie unter Datenbindung im Detail.

Gilt für:

Weitere Informationen