依赖属性的值可以有很多不同的来源,比较常见的一种是从其逻辑树的更上层继承而来。
这意味着当我们在XAML或者代码中设置一个依赖属性的值的时候,这个值会沿着逻辑树向下传递给其他同样拥有这个依赖属性的元素。
下面是个例子。有若干个控件的FontStyle 属性值继承自最高级的Window 元素。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:m="clr-namespace:PersonLib;assembly=PersonLib"
Title="MainWindow" Height="350" Width="525" FontStyle="Italic">
<StackPanel Orientation="Vertical">
<Button Content="Run" Height="23" Width="75" />
<Button Content="Skip" Height="23" Width="75" />
<StackPanel Orientation="Horizontal">
<Label Content="Inside 2nd StackPanel"/>
<Label Content="I do my own FontStyle" FontStyle="Normal"/>
</StackPanel>
</StackPanel>
</Window>
这是上面代码显示的窗口:
如果某个元素中的依赖属性被明确的赋值了,那么它就会忽略继承来的值而使用自己赋值的值。