属性值继承如何在WPF中工作?

属性值继承如何在WPF中工作?

问题描述:

根据MSDN,属性值继承使元素树中的子元素能够从父元素获取特定属性的值,并继承该值,因为它在最近的父元素中的任何位置设置。属性值继承如何在WPF中工作?

请找到样品例如低于

<Grid Width="300" > 
       <Border BorderThickness="1"> 
       <StackPanel Width="200" Height="200" Background="AliceBlue"> 
        <TextBlock /> 
       </StackPanel> 
       </Border> 
      </Grid> 

我有关于上述的实施例2点的问题,

  1. TextBlock的背景没有被设置在正文块的水平,但它从母体获得值StackPanel中。同样,它从堆叠面板的宽度为200,但高度没有设置为200,为什么?

  2. 由于未设置TextBlock的Text属性,它是否会在其父级像Stackpanel,Border,Grid中查找它?我找不到在Panel级别设置Text属性值的机制。

依赖项属性值优先级为well documented

1)根据父级的大小(可用大小)和期望大小来显示内容,控件的大小不会被继承,它是measured

2)为此,您必须在附加属性声明中使用FrameworkPropertyMetadata.Inherits选项。此外,只有连接DP可以继承值:

尽管属性值继承可能出现的nonattached依赖性质的工作,在运行时树通过一定的对象,对象组A nonattached财产的继承行为是不确定的。始终使用RegisterAttached来注册在元数据中指定Inherits的属性。

+0

什么是继承的属性。它只是不被继承的大小吗? – sdhok

+0

如果您正在查看详尽的附加属性列表,我将无法提供 – nkoniishvt

+0

感谢您的答复。即使背景属性也没有被继承, 在键入TextBlock后的所有属性都被继承。 – sdhok