【发布时间】:2011-11-16 21:37:29
【问题描述】:
我在 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>
【问题讨论】:
-
我无法直接回答您的问题,但可以推荐 WPF 间谍实用程序 Snoop。您可以分析应用程序的每个元素并在应用程序运行时立即更改其属性。也许您可以找到一种方法来更改属性,让列表项看起来像您想要的那样,然后在您的 xaml 文件中进行这些更改。
标签: wpf listview windows-7 windows-xp