Partager via


DependencyProperty.UnsetValue Propriété

Définition

Spécifie une valeur statique qui est utilisée par le système de propriétés plutôt que null pour indiquer que la propriété existe, mais dont la valeur n’est pas définie par le système de propriétés ou par un code d’application.

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

Valeur de propriété

Object

Platform::Object

IInspectable

Valeur sentinelle d’une valeur non définie.

Exemples

Cet exemple recherche une valeur locale existante avec ReadLocalValue. S’il existe une valeur locale, comme indiqué en ne retournant pas UnsetValue, la valeur locale existante est supprimée en appelant 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;
    }
}
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

Remarques

UnsetValue est une valeur sentinelle utilisée pour les scénarios où le système de propriétés de dépendance ne peut pas déterminer une valeur de propriété de dépendance demandée. UnsetValue est utilisé plutôt que null, car null est une valeur de propriété valide pour la plupart des valeurs de type référence et est une Valeur DefaultValue fréquemment utilisée dans les métadonnées d’une propriété de dépendance.

UnsetValue n’est jamais retourné à partir d’un appel DependencyObject.GetValue . Lorsque vous appelez DependencyObject.GetValue pour une propriété de dépendance, l’une de ces conditions est toujours vraie :

  • Une propriété de dépendance a une valeur par défaut établie dans les métadonnées et cette valeur est retournée. Cette valeur peut provenir de la valeur DefaultValue des métadonnées de la propriété. Il peut s’agir de null.
  • Une autre valeur a été établie par le biais de la priorité des valeurs (par exemple, un style a été appliqué ou une liaison a été évaluée), et la valeur par défaut n’est plus pertinente. Même s’il est spécifiquement défini, il peut toujours s’agir de null. Pour plus d’informations sur la précédence des valeurs, consultez Vue d’ensemble des propriétés de dépendance.

DependencyObject.ReadLocalValue renvoie UnsetValue lorsque la propriété demandée n’a pas été définie localement.

Notes

N’inscrivez pas de propriété de dépendance avec la valeur par défaut UnsetValue. Cela prêtera à confusion pour les consommateurs de biens immobiliers et aura des conséquences inattendues au sein du système de propriété.

UnsetValue doit être retourné à partir d’une implémentation IValueConverter qui fournit la conversion d’une liaison de données en propriété de dépendance, dans tous les cas où le convertisseur ne peut pas convertir une valeur source. Les convertisseurs ne doivent pas lever d’exceptions pour ce cas dans IValueConverter.Convert. Elles apparaissent en tant qu’exceptions d’exécution pour lesquelles vous devez ajouter la gestion dans UnhandledException ou pire encore apparaissent pour les utilisateurs comme des exceptions d’exécution réelles. Les implémentations de convertisseur doivent suivre le modèle de liaison général que toute liaison ayant échoué ne fait rien et ne fournit pas de valeur, et UnsetValue plutôt que null est la valeur sentinelle pour ce cas que le moteur de liaison comprend. Pour plus d’informations, voir Présentation détaillée de la liaison de données.

S’applique à

Voir aussi