方法 : 依存関係プロパティの既定値を復元する

この例では、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 = locallySetProperties.Current.Property;
            if (!propertyToClear.ReadOnly) { uie.ClearValue(propertyToClear); }
        }
    }
}

サンプル全体には、Shape の種類ごとの暗黙のスタイルが含まれています。ClearValue の呼び出しでローカル値が消去された後、消去されたプロパティのプロパティ値は、各 Shape のスタイルによって決定されます。これらのプロパティのメタデータでの DefaultValue は、スタイルによる値よりも決定優先順位が低いので、値の消去後に DefaultValue は使用されません。依存関係プロパティの値優先順位の詳細については、「依存関係プロパティ値の優先順位」を参照してください。

参照

参照

DefaultValue

概念

依存関係プロパティ値の優先順位

その他の技術情報

プロパティに関する「方法」トピック