我想在我的應用程序中使用自定義主題,據我所知我可以通過使用資源字典並在App.xaml中引用它來實現此目的。我猜默認標籤樣式重寫用相同的價值觀,但我所有的標籤字體爲綠色如何擴展而不是覆蓋WPF樣式
<Style TargetType="{x:Type Label">
<Setter Property="Foreground" Value="Green" />
</Style>
現在:樣式將覆蓋默認這樣。當我想再次在某處標記一個標籤時,問題就開始了。當我想換一些其他財產在我的網格像我網格內這個
<Grid.Resources>
<Style TargetType="{x:Type Label">
<Setter Property="FontSize" Value="28" />
</Style>
</Grid.Resources>
所有標籤正在失去他們的前景色,再有一個默認的(我沒有覆蓋在上一步中默認?)。經過一番嘗試後,我發現要做到這一點,我必須添加另一個屬性Style
聲明BasedOn={StaticResource {x:Type Label}}"
,它的工作原理。這對我來說很奇怪,因爲現在我必須在整個應用程序中重複使用相同的BasedOn代碼,而這不是樣式的工作原理 - 這應該是自動完成的!例如,在HTML + CSS中,樣式被繼承和合並,在WPF中它們被替換...
請注意,當我不使用任何樣式時,控件仍然會從somehwere(System Themes?)中獲得它們的外觀。我如何告訴他們在別的地方尋找默認值,所以沒有任何額外的樣式代碼,他們會認爲默認情況下他們應該是綠色的?
有什麼辦法可以自動設置BasedOn屬性?或者也許有更好的做這個總體?
我已經找到答案與此http://stackoverflow.com/questions/2377055/override-overriden-wpf-theme – labm0nkey 2013-03-25 14:18:56
similliar的問題,我只是重新讀一遍你的問題,如果你使用了我想知道資源字典?這聽起來像是你想要定義一種風格,只是將這種風格應用到你的xaml元素,對吧?那麼,如果你設置了一個資源字典,你可以讓你的基本風格設置所有的標籤都有一個綠色的前景,然後有另一種基於設置字體大小的風格,全部包含在代碼文件中,用作字典。然後在每個xaml元素中,將樣式分配爲'Style =「{StaticResource LargeGreen}」'或任何您稱之爲的樣式。我會試着用一個例子來編輯我的答案。 – Zack 2014-01-09 14:44:23