When you get the value of a dependency property, you are
potentially obtaining a value that was set on that property through any
one of the other property-based inputs that participate in the WPF
property system. Dependency property value precedence exists so that a
variety of scenarios for how properties obtain their values can interact
in a predictable way.
Consider the following example. The example includes a style that applies to all buttons and their
Background properties, but then also specifies one button with a locally set
Background value.
Note
|
The SDK documentation uses the terms "local
value" or "locally set value" occasionally when discussing dependency
properties. A locally set value is a property value that is set directly
on an object instance in code, or as an attribute on an element in
XAML.
|
In principle, for the first button, the property is set
twice, but only one value applies: the value with the highest
precedence. A locally set value has the highest precedence (except for a
running animation, but no animation applies in this example) and thus
the locally set value is used instead of the style setter value for the
background on the first button. The second button has no local value
(and no other value with higher precedence than a style setter) and thus
the background in that button comes from the style setter.
<StackPanel>
<StackPanel.Resources>
<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Red"/>
</Style>
</StackPanel.Resources>
<Button Background="Green">I am NOT red!</Button>
<Button>I am styled red</Button>
</StackPanel>
No comments:
Post a Comment