Я разработал приложение WPF под WinXP, и у моего ListView был мой ожидаемый макет. После запуска того же программного обеспечения под Win7, я увидел, что ListViewItems имеют небольшой разрыв между каждой строкой.
Я играл с Margin und 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>