如何:还原 Dependency 属性的默认值

更新:2007 年 11 月

此示例演示如何使用 ClearValue 方法将依赖项属性值重置为其默认值。

示例

下面的示例清除多种类型的 Shape 元素的本地设置的属性值。示例中所演示的 RestoreDefaultProperties 用户定义方法查找所有本地设置的读/写依赖项属性,并将其全部清除。这些属性的本地值是使用 XAML 属性语法在加载的 XAML 页中建立的(未演示)。运行 RestoreDefaultProperties 后,每个属性的有效值由包含在该 Shape 类型的样式中的 Setter 值确定。

请注意,依赖项属性的默认值不一定是在该依赖项属性的元数据中建立的 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

其他资源

属性帮助主题

属性示例