Como: Restore the Default Value of a Dependency Property

Este exemplo mostra como usar o método ClearValue para redefinir um valor de dependency property para o seu valor padrão.

Exemplo

O exemplo a seguir limpa os valores de propriedades definidos localmente de vários tipos de elementos Shape. O método RestoreDefaultProperties definido pelo usuário mostrado no exemplo localiza todas as propriedades de dependência de leitura/gravação que são definidas localmente e limpa cada uma delas. Valores locais para as propriedades foram estabelecidas (usando a sintaxe do atributo XAML) em uma página XAML carregada (não mostrada). Após a execução de RestoreDefaultProperties, o valor efetivo para cada propriedade é determinado pelo valor de Setter que está contido no estilo para o tipo de Shape.

Observe que o valor padrão para uma propriedade de dependência não é necessariamente o DefaultValue que é estabelecida nos metadados para tal propriedade de dependência. Outros fatores ainda estão ativos, e eles podem se tornar a fonte para o valor efetivo da propriedade após o valor local ser desmarcado.

Private Sub RestoreDefaultProperties(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim uic As UIElementCollection = Sandbox.Children
    For Each uie As Shape In uic
        Dim locallySetProperties As LocalValueEnumerator = uie.GetLocalValueEnumerator()
        While locallySetProperties.MoveNext()
            Dim propertyToClear As DependencyProperty = locallySetProperties.Current.Property
            If Not propertyToClear.ReadOnly Then
                uie.ClearValue(propertyToClear)
            End If
        End While
    Next
End Sub
void RestoreDefaultProperties(object sender, RoutedEventArgs e)
{
    UIElementCollection uic = Sandbox.Children;
    foreach (Shape uie in uic)
    {
        LocalValueEnumerator locallySetProperties = uie.GetLocalValueEnumerator();
        while (locallySetProperties.MoveNext())
        {
            DependencyProperty propertyToClear = (DependencyProperty)locallySetProperties.Current.Property;
            if (!propertyToClear.ReadOnly) { uie.ClearValue(propertyToClear); }
        }
    }
}

For the complete sample, see Restaurando o exemplo de valores padrão. O exemplo completo do qual esse exemplo é derivado inclui estilos implícitos para cada tipo Shape. Após a chamada ClearValue limpar o valor local, o estilo de cada Shape determina valores de propriedade para as propriedades específicas que foram limpas. O DefaultValue baseado em metadados dessas propriedades opera em uma precedência determinada por valor menor do que os estilos usam, de forma que DefaultValue não é usada mesmo após os valores serem desmarcados. Para obter mais informações sobre precedência de valor das propriedades de dependência, consulte Precedência de valores de propriedade de dependência. Certifique-se de executar o Restaurando o exemplo de valores padrão para ver como o estilo aplica o valor.

Consulte também

Tarefas

Restaurando o exemplo de valores padrão

Conceitos

Precedência de valores de propriedade de dependência

Referência

DefaultValue

Outros recursos

Tópicos de Como Fazer sobre Propriedades

Exemplos de propriedades