绕过WPF Items控件中的fencepost原则

绕过WPF Items控件中的fencepost原则,wpf,itemscontrol,fencepost,Wpf,Itemscontrol,Fencepost,我有一个ItemsControl,它有一个itemDataTemplate,其中包含一个Margin值0,0,20,以便在每个项目之间添加一个20像素的间距。问题是,当该控件滚动时,最终项后有一个备用的20px,这是由于将此边距应用于最终项造成的 如何在末端移除/剪裁此间隙,或确保未在第一位置添加此间隙?即,在项目之间应用20px的间距,但不在列表的开始或结束处?在ItemsPanelTemplate上,将Margin属性设置为“0,0,0,-20” 例如: <Grid Backgroun

我有一个ItemsControl,它有一个item
DataTemplate
,其中包含一个
Margin
0,0,20
,以便在每个项目之间添加一个20像素的间距。问题是,当该控件滚动时,最终项后有一个备用的20px,这是由于将此边距应用于最终项造成的


如何在末端移除/剪裁此间隙,或确保未在第一位置添加此间隙?即,在项目之间应用20px的间距,但不在列表的开始或结束处?

ItemsPanelTemplate
上,将
Margin
属性设置为“0,0,0,-20”

例如:

<Grid Background="Black">
    <ItemsControl ItemsSource="abcdefg" Background="White" VerticalAlignment="Top">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border Margin="0,0,0,20" Background="Silver">
                    <TextBlock Text="{Binding}" Margin="5" />
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Margin="0,0,0,-20" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</Grid>