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"
。
我有一个简单的测试应用程序,我正在使用它来找出我的 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"
。