是否存在阻止DependecyProperty繼承的機制,或者某些值由某些元素在本地設置?DependcenyProperty是否總是繼承?
我有兩個例子,我不明白:
<Button Background="AntiqueWhite" Height="40" Width="50" FontSize="10">
<Button>Test</Button>
</Button>
<TextBlock Text="Test" Background="AntiqueWhite" Height="40" Width="50" FontSize="10">
<TextBlock />
</TextBlock>
按鈕元素的子按鈕沒有繼承背景/高/寬,但它繼承字號即使所有屬性都是DependencyProperty的。
在TextBlock元素情況是相同的,但我們有另一個DependencyProperty(文本)。
我明白優先級是如何工作的。本地值優先於繼承的優先級。但是如果一個控件本身設置了某些東西,我可以在哪裏獲得信息或者也許有其他一些機制阻止一些DependencyProperties被繼承?
是否有任何「簡單」的方法來檢查標誌?在你提到的鏈接中,他們寫了一些代碼。我認爲像這樣的信息將顯示在msdn的每個屬性的描述。 – Morfidon
@Morfidon我沒有直接意識到一個工具,但你應該能夠使用反射器來查看具有元數據的FrameworkElement的來源。例如一個免費的JetBrains dotPeek(它也很酷:))。靜態按鈕ctor覆蓋了一些元數據,例如:FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(Button),(PropertyMetadata)new FrameworkPropertyMetadata((object)typeof(Button))); – Samuel