方法 : 依存関係プロパティの既定値を復元する
更新 : 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 は使用されません。依存関係プロパティの値優先順位の詳細については、「依存関係プロパティ値の優先順位」を参照してください。「 既定値の復元のサンプル」を実行して、スタイルの値が適用されるプロセスを確認してください。