c# - 无法消除 Windows 8 Metro 'ListView' 中 Tiles 之间的填充/边距

标签 c# xaml listview windows-8 padding

我正在尝试在 StackPanel 中构建两个 ListView 对象,并让所有 ItemTemplate Tiles 相互“接触”(意思是ListView 中没有边距或填充)。 Windows 8 Metro 似乎有某种内置的填充/边距。 我的问题:如何删除它们或将它们设置为 0

这是我的代码:

<StackPanel x:Name="teesSP" 
            HorizontalAlignment="Left" 
            Orientation="Horizontal" 
            VerticalAlignment="Top" >

    <ListView x:Name="timesLV1"            
              SelectionMode="Multiple" 
              SelectionChanged="timesLV_Click" 
              ItemTemplate="{StaticResource TimeTileTemplate}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="Padding" Value="0"/>
                <Setter Property="Margin" Value="0"/>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>

    <ListView x:Name="timesLV2"            
              SelectionMode="Multiple" 
              SelectionChanged="timesLV_Click" 
              ItemTemplate="{StaticResource TimeTileTemplate}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="Padding" Value="0"/>
                <Setter Property="Margin" Value="0"/>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>

</StackPanel>

我的 ItemTemplate 是:

<DataTemplate x:Key="TimeTileTemplate">
    <Grid HorizontalAlignment="Center" Background="White" >
        <Border BorderBrush="Black" BorderThickness="2" >
            <StackPanel Margin="0,0,0,0" Orientation="Horizontal"
                Width="130" Height="60" VerticalAlignment="Center" >
                <TextBlock Margin="2,0,0,0" TextWrapping="Wrap"
                    Style="{StaticResource ItemSubtitleStyle}"
                    VerticalAlignment="Center"
                    HorizontalAlignment="Left"
                    Text="{Binding startTime}" Width="70" />
                <TextBlock TextWrapping="Wrap"
                    Style="{StaticResource ItemTitleStyle}"
                    VerticalAlignment="Center"
                    HorizontalAlignment="Right"
                    Text="{Binding startHole}" Width="40" />
            </StackPanel>
        </Border>
    </Grid>
</DataTemplate>

...并呈现以下内容:

ListView with margins/padding

最佳答案

您应该提供一个负的 margin :

<ListView.ItemContainerStyle>
   <Style TargetType="ListViewItem">
      <Setter Property="HorizontalContentAlignment" Value="Left" />
      <Setter Property="VerticalContentAlignment" Value="Center" />
      <Setter Property="Margin" Value="0,0,0,-8" />
   </Style>
</ListView.ItemContainerStyle>

关于c# - 无法消除 Windows 8 Metro 'ListView' 中 Tiles 之间的填充/边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170212/

相关文章:

c# - 视觉区分 Sitecore 克隆

c# - 为什么 NullReferenceException 不包含有关什么是 null 的信息?

c# - 如何从系统服务自动检测代理设置

c# - EF6.2 已使用 .netFramework 版本 4.6.1 而不是项目目标框架 .NETStandard v2.0 恢复

android - 如何在ListView中显示SD卡上的文件?

c# - WPF。对于多重触发条件, 'Property' 必须具有非空值

c# - WPF MenuItem.IsChecked 绑定(bind)不起作用

c# - 如何使用 Rx 遍历一系列带有停顿和淡入淡出的字符串?

java - 在 ListView 中添加复选框的问题

c# - ListView 项目未显示在 ListView 中,列消失