Поделиться через


Практическое руководство. Восстановление значений свойств зависимостей по умолчанию

Обновлен: Ноябрь 2007

В этом примере показано использование метода ClearValue для сброса значения свойств зависимостей в значение по умолчанию.

Пример

В следующем примере выполняется очистка локально заданных значений свойства нескольких типов элементов Shape. В примере показан определенный пользователем метод RestoreDefaultProperties, который находит все свойства зависимостей для чтения / записи, заданные локально, и очищает каждое из них. Локальные значения для свойств были установлены (с использованием синтаксиса атрибута XAML) на странице загрузки XAML (не показано). После запуска RestoreDefaultPropertiesдействующее значение для каждого свойства определяется значением Setter, содержащимся в стиле для данного типа Shape.

Обратите внимание, что значение свойства зависимостей по умолчанию не обязательно является DefaultValue, которое задается в метаданных этого свойства зависимостей. Другие факторы остаются активными, и они могут стать источником для действующего значения свойства после очистки локального значения.

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); }
        }
    }
}

Полный пример см. в разделе Пример восстановления значений по умолчанию. Полный пример, из которого был заимствован данный пример, включает неявные стили для каждого типа Shape. После того как вызов ClearValue очистит локальное значение, стиль для каждого Shape определит значения для указанных очищенных свойств. DefaultValue на основе метаданных для этих свойств используется с более низким приоритетом по сравнению со стилями, поэтому DefaultValue не используется даже после очистки значений. Дополнительные сведения о приоритете значений свойств зависимостей см. в разделе Приоритет значения свойств зависимостей. Не забудьте запустить Пример восстановления значений по умолчанию, чтобы увидеть, как стиль применяет значение.

См. также

Задачи

Пример восстановления значений по умолчанию

Основные понятия

Приоритет значения свойств зависимостей

Ссылки

DefaultValue

Другие ресурсы

Разделы пошагового руководства по свойствам

Примеры использования свойств