1

所以,我在列表视图中遇到间距问题,这是我的代码:

            <ListView Width="300" ItemsSource="{Binding ChosenDepartment.HoursList}" Grid.Row="1" Grid.Column="1" Margin="100,0,0,0" IsItemClickEnabled="False" SelectionMode="None">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Width="125" Text="{Binding Day}" Style="{StaticResource BasicTextStyle}" FontWeight="Bold"/>
                        <TextBlock Width="160" Text="{Binding Time}" Style="{StaticResource BasicTextStyle}"/>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Padding" Value="0"/>
                    <Setter Property="Margin" Value="0"/>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>

无论我做什么,中间都有StackPanel间距ListItems。足够的空间容纳两行文本。事实上,如果 a 中的文本TextBlock分成两行,它就可以ListViewItem完美地填充。

我可以调整边距,PaddingTextBlocks它什么也没做。影响项目高度的唯一方法ListView是,如果我将 height 属性添加到ItemContainerStyle. 如果我硬编码 a Height,它会影响它,但当然,我不想硬编码Height.

4

2 回答 2

2

ListViewItem 在其模板中具有硬编码的边距,以适应您选择它们​​时添加的边框和视觉指示(通过右键单击它们或用手指向下滑动它们)。

如果要删除它们,则需要在 Blend 中编辑它们的模板:右键单击 ListView,然后选择Edit Additionnal Templates > Edit Generated Item Container (ItemContainerStyle) > Edit a copy...并修改模板。

于 2013-04-23T20:01:40.833 回答
2

Jeremy 的回应使我走上了正确的道路,但最终我发现了另一个控件ItemsControl,它没有任何绒毛,ListView正是我正在寻找的。

于 2013-04-23T20:39:10.380 回答