绕过WPF ItemsControl中的fencepost原则

时间:2013-01-08 17:38:54

标签: wpf itemscontrol fencepost

我有一个ItemsControl,其项目DataTemplate包含Margin0,0,0,20,可在每个项目之间添加20像素的差距。问题是,当此控件滚动时,在此边距应用于最终项目的最终项目之后有一个备用的20px。

如何在最后删除/剪裁此间隙,或确保首先不添加?即,在项之间应用20px的间隙,但在列表的开头或结尾

1 个答案:

答案 0 :(得分:2)

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>