Compartilhar via


DependencyProperty.UnsetValue Propriedade

Definição

Especifica um valor estático que é usado pelo sistema de propriedades em vez de null indicar que a propriedade existe, mas não tem seu valor definido pelo sistema de propriedades ou por nenhum código de aplicativo.

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 da propriedade

Object

Platform::Object

IInspectable

O valor sentinela de um valor não conjunto.

Exemplos

Este exemplo verifica se há um valor local existente com ReadLocalValue. Se houver um valor local, conforme indicado por não retornar UnsetValue, o valor local existente será removido chamando 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;
    }
}

Comentários

UnsetValue é um valor sentinela usado para cenários em que o sistema de propriedades de dependência não consegue determinar um valor de propriedade de dependência solicitado. UnsetValue é usado em vez de null, porque null é um valor de propriedade válido para a maioria dos valores de tipo de referência e é um DefaultValue usado com frequência em metadados para uma propriedade de dependência.

UnsetValue nunca é retornado de uma chamada DependencyObject.GetValue . Quando você chama DependencyObject.GetValue para uma propriedade de dependência, uma dessas condições é sempre verdadeira:

  • Uma propriedade de dependência tem um valor padrão estabelecido em metadados e esse valor é retornado. Esse valor pode vir do DefaultValue dos metadados da propriedade. Pode ser null.
  • Algum outro valor foi estabelecido por meio de precedência de valor (por exemplo, um estilo foi aplicado ou uma Associação foi avaliada) e o valor padrão não é mais relevante. Embora especificamente definido, isso ainda pode ser null. Para obter mais informações sobre precedência de valor, consulte Visão geral das propriedades de dependência.

DependencyObject.ReadLocalValue retorna UnsetValue quando a propriedade solicitada não foi definida localmente.

Observação

Não registre uma propriedade de dependência com o valor padrão de UnsetValue. Isso será confuso para os consumidores de propriedades e terá consequências não intencionais dentro do sistema de propriedades.

UnsetValue deve ser retornado de uma implementação IValueConverter que fornece conversão em uma associação de dados para uma propriedade de dependência, em qualquer caso em que o conversor não consiga converter um valor de origem. Os conversores não devem gerar exceções para esse caso em IValueConverter.Convert, elas aparecerão como exceções em tempo de execução para as quais você precisaria adicionar tratamento em UnhandledException ou pior, mas aparecerão para os usuários como exceções reais em tempo de execução. As implementações de conversor devem seguir o padrão de associação geral de que qualquer associação com falha não faz nada e não fornece um valor e UnsetValue , em vez disso null , é o valor sentinela para esse caso que o mecanismo de associação entende. Para obter mais informações, consulte Vinculação de dados em detalhes.

Aplica-se a

Confira também