Wpf 如何使StackPanel的最后(或第一)子级的样式与其他子级的样式不同?

Wpf 如何使StackPanel的最后(或第一)子级的样式与其他子级的样式不同?,wpf,xaml,Wpf,Xaml,我正在将样式应用于StackPanel: <Style TargetType="{x:Type StackPanel}"> <Style.Resources> <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource TextboxStyle}"> <Setter Property="Margin" Value="0,0,0,5"/>

我正在将样式应用于StackPanel:

<Style TargetType="{x:Type StackPanel}">
    <Style.Resources>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource TextboxStyle}">
            <Setter Property="Margin" Value="0,0,0,5"/>
        </Style>
    </Style.Resources>
</Style>


基本上,它会在StackPanel中的每个文本框的底部添加边距。糟糕的是,最后一个孩子会有不必要的余地。所以我需要将它重置为零,但只针对最后一个元素。WPF当然不是CSS,它有:last child选择器,这样做可能更奇怪。

好吧,我发现,将负边距设置为可以稍微改进一些:
。它取消了最后一个子项的正边距,因此看起来很好。但这只是一个黑客,不是一个真正的解决方案。如果你想使用样式选择器,它有必要的功能来帮助你。最重要的答案似乎正是你想要的。