Compartir a través de


DependencyProperty.UnsetValue Propiedad

Definición

Especifica un valor estático que usa el sistema de propiedades en lugar null de indicar que la propiedad existe, pero no tiene su valor establecido por el sistema de propiedades o por ningún código de aplicación.

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

Valor de propiedad

Object

Platform::Object

IInspectable

Valor centinela de un valor sin establecer.

Ejemplos

En este ejemplo se comprueba si hay un valor local existente con ReadLocalValue. Si hay un valor local, como se indica al no devolver UnsetValue, el valor local existente se quita llamando a 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;
    }
}

Comentarios

UnsetValue es un valor centinela que se usa para escenarios en los que el sistema de propiedades de dependencia no puede determinar un valor de propiedad de dependencia solicitado. UnsetValue se usa en lugar de null, porque null es un valor de propiedad válido para la mayoría de los valores de tipo de referencia y es un DefaultValue usado con frecuencia en metadatos para una propiedad de dependencia.

UnsetValue nunca se devuelve fuera de una llamada DependencyObject.GetValue . Cuando se llama a DependencyObject.GetValue para una propiedad de dependencia, una de estas condiciones siempre es verdadera:

  • Una propiedad de dependencia tiene un valor predeterminado establecido en metadatos y ese valor se devuelve. Este valor puede provenir de DefaultValue de los metadatos de la propiedad. Esto podría ser null.
  • Se estableció otro valor a través de la precedencia de valor (por ejemplo, se aplicó un estilo o se evaluó un enlace ) y el valor predeterminado ya no es relevante. Aunque se establezca específicamente, esto podría ser null. Para obtener más información sobre la precedencia de valores, consulte Información general sobre las propiedades de dependencia.

DependencyObject.ReadLocalValue devuelve UnsetValue cuando la propiedad solicitada no se ha establecido localmente.

Nota

No registre una propiedad de dependencia con el valor predeterminado de UnsetValue. Esto resultará confuso para los consumidores de propiedades y tendrá consecuencias imprevistas dentro del sistema de propiedades.

UnsetValue debe devolverse desde una implementación de IValueConverter que proporcione la conversión en un enlace de datos a una propiedad de dependencia, en cualquier caso en el que el convertidor no pueda convertir un valor de origen. Los convertidores no deben producir excepciones para ese caso en IValueConverter.Convert, se mostrarán como excepciones en tiempo de ejecución que tendría que agregar control para en UnhandledException o peor aún aparecen a los usuarios como excepciones en tiempo de ejecución reales. Las implementaciones del convertidor deben seguir el patrón de enlace general que cualquier enlace con errores no hace nada y no proporciona un valor, y UnsetValue en lugar de null es el valor de sentinel para ese caso que el motor de enlace entiende. Para obtener más información, consulta el tema Enlace de datos en profundidad.

Se aplica a

Consulte también