在 WPF ItemsControl 中绕过栅栏原则
Posted
技术标签:
【中文标题】在 WPF ItemsControl 中绕过栅栏原则【英文标题】:Getting round the fencepost principle in a WPF ItemsControl 【发布时间】:2012-12-22 15:43:03 【问题描述】:我有一个 ItemsControl,其中包含 Margin
值 0,0,0,20
的项目 DataTemplate
,以便在每个项目之间添加 20 像素的间隙。问题是,当这个控件滚动时,由于这个边距被应用到最终项目,在最终项目之后有一个空闲的 20px。
我如何在最后移除/剪掉这个间隙,或者确保一开始就没有添加它?即,在列表的开头或结尾应用 个项目之间的 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>
【讨论】:
以上是关于在 WPF ItemsControl 中绕过栅栏原则的主要内容,如果未能解决你的问题,请参考以下文章
WPF ItemsControl DataTrigger EnterActions动画未启动
WPF ItemsControl ListBox ListView比较
在WPF中的UserControl中的ItemsControl中绑定问题