Обойти принцип ограждения в WPF ItemsControl

У меня есть ItemsControl с элементом DataTemplate это включает в себя Margin ценность 0,0,0,20 добавить 20-пиксельный промежуток между каждым элементом. Проблема в том, что когда этот элемент управления прокручивается, после последнего элемента появляется запасной 20 пикселей, вызванный применением этого поля к последнему элементу.

Как мне удалить / обрезать этот пробел в конце или убедиться, что он не добавлен в первую очередь? то есть применить разрыв в 20px между элементами, но не в начале или в конце списка?

1 ответ

Решение

На 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>
Другие вопросы по тегам