簡體   English   中英

屬性值繼承在WPF中如何工作?

[英]How does property value inheritance work in WPF?

根據MSDN,屬性值繼承使元素樹中的子元素能夠從父元素中獲取特定屬性的值,並在最接近的父元素中的任何位置繼承該值。

請在下面的示例示例中找到

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

我對上述示例有2個問題,

  1. TextBlock的背景未在文本塊級別設置,但它從父Stackpanel獲取值。 同樣,它從堆棧面板獲取200的寬度,但未將height設置為200,為什么?

  2. 由於未設置TextBlock的Text屬性,它將在其父級(如Stackpanel,Border,Grid)中尋找它嗎? 我找不到在面板級別設置Text屬性值的機制。

依存屬性值優先級已得到充分證明

1)控件的大小不是繼承的,而是根據父對象的大小(可用大小)和顯示內容所需的大小來衡量的

2)為此,您必須在附加的屬性聲明中使用FrameworkPropertyMetadata.Inherits選項。 此外,僅附加的DP可以具有繼承的值:

盡管屬性值繼承似乎可用於非附加的依賴項屬性,但未定義通過運行時樹中某些對象-對象划分的非附加屬性的繼承行為。 始終使用RegisterAttached在元數據中指定繼承的位置注冊屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM