UWP ListView 如何控制项目高度 - ListViewItem 周围的区域

UWP ListView how to control item height - area around the ListViewItem

我有一个简单的测试应用程序,我正在使用它来找出我的 ListView 问题。除了我现在拥有的,我还有两件事需要完成。 1. 使 ListViewItems 之间的间距小于默认值。我似乎无法弄清楚这是在哪里设计的。 2. 我有 IsEnabled="False" 这让我得到了我想要的行为,用户无法与控件交互。但是,我不希望该项目褪色。想知道我需要调整什么属性才能实现这一点。

感谢您的帮助!

    <Grid x:Name="GridBase" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" MinWidth="400">
    <Grid Margin="30,20" Background="LightGray">
        <ListView x:Name="MyList" ItemsSource="{Binding SourceData}" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" IsItemClickEnabled="False" Width="{Binding ElementName=GridBase,Path=Width}" MinWidth="400" MaxWidth="1200" IsEnabled="False">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment"  Value="Stretch"></Setter>
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                    <Setter Property="Padding" Value="0,0"/>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.Header>
                <Style TargetType="ListViewHeaderItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                </Style>
            </ListView.Header>
            <ListView.HeaderTemplate>
                <DataTemplate>
                    <Grid Background="LightGreen" HorizontalAlignment="Stretch" Width="{Binding ElementName=MyList,Path=Width}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="80"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="40"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="6*"/>
                            <ColumnDefinition Width="40"/>
                            <ColumnDefinition Width="2*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="Col1" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="1" Text="Col2" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="2" Text="Col3" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="3" Text="Col4" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="4" Text="Col5" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="5" Text="Col6" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="6" Text="Col7" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="7" Text="Col8" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="8" Text="Col9" HorizontalAlignment="Left"/>
                    </Grid>
                </DataTemplate>
            </ListView.HeaderTemplate>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid HorizontalAlignment="Stretch" Background="Aquamarine" Width="{Binding ElementName=MyList,Path=Width}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="80"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="40"/>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="6*"/>
                            <ColumnDefinition Width="40"/>
                            <ColumnDefinition Width="2*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="{Binding Column1}" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="1" Text="{Binding Column2}" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="2" Text="{Binding Column3}" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="3" Text="{Binding Column4}" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="4" Text="{Binding Column5}" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="5" Text="{Binding Column6}" HorizontalAlignment="Left"/>
                        <TextBlock Grid.Column="6" Text="{Binding Column7}" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="7" Text="{Binding Column8}" HorizontalAlignment="Center"/>
                        <TextBlock Grid.Column="8" Text="{Binding Column9}" HorizontalAlignment="Left"/>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Grid>

如果您想让 ListViewItem 之间的间距小于默认值,您应该设置 ListViewItem 的边距并使顶部或底部更小。

解决1.你可以通过添加

来调整ListviewItem的边距
<Setter Property="Margin" Value="-10,-10,-10,-10"/>

<Style TargetType="ListViewItem">

要解决 2. 在您的 ListView 中设置 IsHitTestVisible="False"