Wpf XAML:将样式应用于嵌套控件

Wpf XAML:将样式应用于嵌套控件,wpf,xaml,styles,Wpf,Xaml,Styles,在WPF Prism v4中,我有一个作为区域的工具栏。在这个区域中,我注入了UserControls,其中包含工具栏的按钮和分隔符。 问题在于,由于按钮现在位于用户控件中,工具栏样式不再适用 我可以通过定义样式来解决这个问题: <Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}"/> <Button Style="{StaticResource {x:Static ToolBar.Bu

在WPF Prism v4中,我有一个作为区域的工具栏。在这个区域中,我注入了UserControls,其中包含工具栏的按钮和分隔符。 问题在于,由于按钮现在位于用户控件中,工具栏样式不再适用

我可以通过定义样式来解决这个问题:

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

但我想避免这种情况,因为我有数百个按钮。所以我的问题是,我是否可以从资源字典中为工具栏下的所有按钮定义样式


谢谢大家!

您可以使用以下内容:

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


如果将其放入工具栏资源中,则它将应用于其中的任何按钮。

将基本样式放入工具栏资源中:

<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>

...

code裸体和Marat Khasanov提到的相同技术也可以在默认工具栏样式中使用,因此您不必在本地重置它们

    <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>

我希望这是工具栏的默认行为,但我发现它需要明确的定义


希望有帮助。:)

这是否也适用于任何动态注入的视图?