【问题标题】:UWP ListView how to control item height - area around the ListViewItemUWP ListView如何控制项目高度——ListViewItem周围的区域
【发布时间】:2016-08-08 20:08:51
【问题描述】:

我有一个简单的测试应用程序,用于找出我的 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>

【问题讨论】:

    标签: xaml listview styles height win-universal-app


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      解决1.可以通过添加来调整ListviewItem的边距

      <Setter Property="Margin" Value="-10,-10,-10,-10"/>
      

      &lt;Style TargetType="ListViewItem"&gt;

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

      【讨论】:

        猜你喜欢
        • 2016-11-01
        • 2021-07-08
        • 2019-01-15
        • 1970-01-01
        • 2020-11-25
        • 2017-07-06
        • 2016-11-28
        • 1970-01-01
        • 2021-01-20
        相关资源
        最近更新 更多