我的列表框是使用DataTemplate进行数据绑定的对象列表驱动的数据,例如:
<ListBox x:Name="TheMainListBox"
ScrollViewer.IsVerticalRailEnabled="True"
ScrollViewer.IsHorizontalRailEnabled="False"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Height="540"
ItemsSource="{Binding}"
Width="Auto"
Margin="0"
Padding="0"
Background="Yellow"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectionChanged="TheMainListBox_SelectionChanged"
DoubleTapped="TheMainListBox_DoubleTapped"
>
模板:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid or Stackpanel Background="Blue"
Padding="0"
BorderBrush="Black"
BorderThickness="1"
Margin="0"
>
.... Binding Textboxes/blocks
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
我最终得到一个黄色容器,ListBox,..里面有蓝色矩形,ListBox项目,但它们之间有一个垂直间隙。我可以设置一个负的垂直上边距,但这是粗糙的,并不适用于顶部项目。如何将项目之间的垂直间隙减小到零。
如果创建一个带有静态项的ListBox,每个都在ListBoxItem容器中,例如:
<ListBoxItem BorderThickness="1" Width="100" Height="50"
BorderBrush="Black" Background="Red"/>
一切都按要求运作。
那么如何通过ItemTemplate / DataBinding摆脱项目之间的垂直间距? 这是关键任务,提前做好。
答案 0 :(得分:2)
我没有时间加载项目进行测试但你应该能够杀死可能导致它的边距/填充。所以添加;
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
</Style>
</ListBox.ItemContainerStyle>
答案 1 :(得分:0)
我还没有想到为什么会发生这种情况,还没有深入探讨风格,我的回答并不好看,但试试Margin="0,-2,0,-2"
<DataTemplate>
<Grid or Stackpanel Background="Blue"
Padding="0"
BorderBrush="Black"
BorderThickness="1"
Margin="0,-2,0,-2"
>
.... Binding Textboxes/blocks
</Grid>
</DataTemplate>
答案 2 :(得分:0)
正确设置ListBoxItem的高度将解决问题。这是代码段
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Height" Value="Your_Desired_Height"/>
</Style>
</ListBox.ItemContainerStyle>
对于列表框,请使用高度属性,对于列表视图,请使用MinHeight属性。替换Your_Desired_Height占位符中所需的高度值。