2013-10-15 67 views
2

如果將OverridesDefaultStyle設置爲true,則不會使用默認樣式。 同時使用BasedOn的結果是什麼?在WPF中覆蓋默認樣式與BasedOn

<Style x:Key="MenuButton" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" 
      TargetType="{x:Type c:MenuButton}"> 
     <Setter Property="OverridesDefaultStyle" Value="True" /> 
</Style> 

這兩條指令是否以任何方式相互矛盾?
是否會被忽略的默認樣式ToolBar.ButtonStyleKey
在這個特殊的例子中,我看不到OverridesDefaultStyle是真是假。

回答

3

如果你使用這兩個屬性,你最終會得到一個MenuButton對象(在你的例子),其採用其所有Style信息MenuButtonStyle和屬性的其餘部分將來自於你ToolBar.ButtonStyleKeyStyle。至少,這在理論上是正確的,因爲我從來沒有真的必須使用這種安排。

尤其是OverridesDefaultStyle屬性設置爲True是「應該」,使風格的元素沒有使用主題樣式屬性,而不是讓所有的Style值從本地應用樣式。不過,我也發現在某些情況下,將此屬性設置爲True似乎沒有任何區別。

在另一方面,當此屬性設置的工作,它會刪除默認ControlTemplate等以支持相同的功能,默認的主題風格,你必須用一種可複製的控制模板提供一個備用的風格相同的結構

斜體文字來自FrameworkElement.OverridesDefaultStyle Property頁面上MSDN