我在WinXP下开发了一个WPF应用程序,我的ListView有我预期的布局。在Win7下启动相同的软件后,我看到ListViewItems在每一行之间有一个小的间隙。
我为每个元素使用了Margin和Padding,但是我找不到一个解决方案,在WinXP和Win7下布局是相同的,而无需编写单独的代码。
我认为它与当前的Windows主题有关,但我无法理解。有人有提示吗?
截图WindowsXP
截屏Windows 7
这是我使用的一些(简化的)XAML
<ListView x:Name="ListView">
<ListView.Resources>
<Style x:Key="CellBorderStyle" TargetType="{x:Type Border}">
<Setter Property="BorderThickness" Value="0,0,1,1"></Setter>
<Setter Property="BorderBrush" Value="LightGray"></Setter>
<Setter Property="Margin" Value="-6,0,-6,0"></Setter>
</Style>
<DataTemplate x:Key="NameTemplate">
<Border Name="NameBorder" Style="{StaticResource CellBorderStyle}">
<TextBlock>MyName</TextBlock>
</Border>
</DataTemplate>
<DataTemplate x:Key="AddressTemplate">
<Border Name="AddressBorder" Style="{StaticResource CellBorderStyle}" Background="LightSteelBlue">
<TextBlock>MyAddress</TextBlock>
</Border>
</DataTemplate>
<DataTemplate x:Key="StreetTemplate">
<Border Name="StreetBorder" Style="{StaticResource CellBorderStyle}" Background="LightGreen">
<TextBlock>MyStreet</TextBlock>
</Border>
</DataTemplate>
<DataTemplate x:Key="CityTemplate">
<Border Name="CityBorder" Style="{StaticResource CellBorderStyle}">
<TextBlock>MyCity</TextBlock>
</Border>
</DataTemplate>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Name" x:Name="colName"
CellTemplate="{StaticResource NameTemplate}"></GridViewColumn>
<GridViewColumn Header="Address" x:Name="colAddress"
CellTemplate="{StaticResource AddressTemplate}"></GridViewColumn>
<GridViewColumn Header="Street" x:Name="colStreet"
CellTemplate="{StaticResource StreetTemplate}"></GridViewColumn>
<GridViewColumn Header="City" x:Name="colCity"
CellTemplate="{StaticResource CityTemplate}"></GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
答案 0 :(得分:1)
您还必须更改边框顶部和底部边距:
enter code here
<Setter Property="Margin" Value="-6,0,-6,0"></Setter>
to:
<Setter Property="Margin" Value="-6,-3,-6,-3"></Setter>
答案 1 :(得分:0)
如果将重点放在列表视图上,则需要额外的空间。
使用时会消失
<Setter Property="Focusable" Value="false"/>
在itemcontainerstyle
上