2011-04-14 50 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的默认行为,但我发现它需要明确的定义。

希望它有帮助。 :)