2011-04-14 44 views
3

在WPF中,Prism v4中,我有一個作爲區域的ToolBar。在這個區域中,我注入了包含工具欄按鈕和分隔符的UserControls。 問題是,因爲按鈕現在位於UserControl中,所以工具欄樣式不再適用。XAML:將樣式應用於嵌套控件

可以定義的樣式解決這個問題:

<Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}"/> 
<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"/> 

但我想避免這種情況,因爲我得到了數百個按鈕。所以我的問題是,如果我可以從資源字典中定義ToolBar下所有按鈕的樣式?

謝謝!

回答

3

您可以使用類似:

<Style TargetType="Separator" BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" /> 
<Style TargetType="Button" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" /> 

如果你把你的工具欄資源,那麼它會應用到裏面的任何按鈕。

+0

那樣簡單。非常感謝你! – 2011-04-14 12:29:49

+0

這也適用於動態注入的任何視圖嗎? – mehul9595 2013-09-06 13:56:58

2

放鹼風格到工具欄資源:由CodeNaked和薩芬Khasanov提到

<ToolBar> 
    <ToolBar.Resources> 
     <Style TargetType="{x:Type Button}" 
       BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"/> 
     <Style TargetType="{x:Type Separator}" 
       BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}"/> 
    </ToolBar.Resources> 
    ... 
</ToolBar> 
6

同樣的技術也可以在默認的工具欄風格的利用,這樣你就不必在本地重置。

<Style TargetType="{x:Type ToolBar}"> 
     <Style.Resources> 
      <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" /> 
      <Style TargetType="{x:Type Separator}" BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" /> 
     </Style.Resources> 
     <!-- etc... --> 
    </Style> 

我希望這是ToolBar的默認行爲,但我發現它需要明確的定義。

希望它有幫助。 :)