Wpf 本地、元素范围的样式不应用于子级

Wpf 本地、元素范围的样式不应用于子级,wpf,xaml,wpf-4.5,Wpf,Xaml,Wpf 4.5,我是一名WPF初学者,我一直在想为什么下面的XAML不能做到我认为应该做到的事情: <ToolBar HorizontalAlignment="Left" Margin="255,250,0,0" VerticalAlignment="Top"> <ToolBar.Resources> <Style TargetType="{x:Type Separator}"> <Setter Property="Mar

我是一名WPF初学者,我一直在想为什么下面的XAML不能做到我认为应该做到的事情:

<ToolBar HorizontalAlignment="Left" Margin="255,250,0,0" VerticalAlignment="Top">
    <ToolBar.Resources>
        <Style TargetType="{x:Type Separator}">
            <Setter Property="Margin" Value="4,6" />
        </Style>
    </ToolBar.Resources>
    <Button Content="Save"/>
    <Button Content="Cancel"/>
    <Separator />
    <Button Content="Options"/>
</ToolBar>

这应该会导致
的边距为
4,6
,但只有在样式和
上明确指定
x:Key
时才会这样做

根据我到目前为止学到的知识,我的
应该应用于
中的所有分隔符、它的子元素、它的子元素等等


我做错了什么?

您应该将
x:Key
设置为
{x:Static ToolBar.SeparatorStyleKey}
,以便在
工具栏中应用样式:

<ToolBar HorizontalAlignment="Left" Margin="255,250,0,0" VerticalAlignment="Top">
    <ToolBar.Resources>
        <Style x:Key="{x:Static ToolBar.SeparatorStyleKey}" TargetType="{x:Type Separator}">
            <Setter Property="Margin" Value="4,6" />
            <Setter Property="Background" Value="Red" />
        </Style>
    </ToolBar.Resources>
    <Button Content="Save"/>
    <Button Content="Cancel"/>
    <Separator />
    <Button Content="Options"/>
</ToolBar>


这是因为
工具栏
类包含一些“特殊”逻辑,用于将默认样式应用于某些类型的控件,包括
分隔符

哇,谢谢mm8!这就解决了问题,我将在以后为我设计的其他工具栏元素应用相同的逻辑。