2011-07-07 67 views
3

如果我有ContextMenu(比如)一個子類,稱爲MyContextMenu和我定義我的風格與MergedDictionariesTargetType=ContextMenu,爲什麼會發生這種風格並不適用於MyContextMenu實例?Silverlight的 - 隱式的繼承問題

它的工作對所有的基類的實例,而不是任何的子類。

我可以創造更多的風格和使用BasedOn,但就是不乾淨。看起來它應該沒有這個工作。

我已經確定我的子類調用基礎構造函數,並驗證DefaultStyleKey是我的基類的類型。

回答

3

根據this article

注意,對於要應用的類型化樣式的TargetType必須完全匹配。例如,如果你指定樣式的鑰匙,那麼它的確定目標元素是TargetType的的子類。但是一個類型化的風格通常會被應用到完全匹配匹配的元素上!這是爲了防止意外。例如,您可能已經爲應用程序中的所有切換按鈕創建了一個樣式,並且您不希望將此樣式應用於任何CheckBox(源自ToggleButton)。

同樣可以the official documentation讀取(中途下)

+0

答案當然是我不看的地方。謝謝,我想當時沒有什麼可以做的。至少我們有'BasedOn'。 – Kir