如何:还原 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。有关依赖项属性的值优先级的更多信息,请参见依赖项属性值优先级。请确保运行还原默认值示例,以了解该样式是如何应用该值的。