Обойти принцип ограждения в 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>