带有GridView选定行的ListView - 删除3D外观

时间:2012-12-30 10:55:24

标签: wpf listview gridview

我有一个包含GridView的WPF ListView。我希望所选行看起来“扁平”而不是3d样式。

任何人都知道如何做到这一点? 谢谢, Smadar

1 个答案:

答案 0 :(得分:8)

3D外观是默认样式的一部分。要更改此设置,您需要替换ControlTemplate的{​​{1}}。这是一个产生以下内容的简单示例:ListView screenshot

ListViewItem

注意:默认模板位于http://msdn.microsoft.com/en-us/library/ms788747.aspx。由于无法更改现有模板的<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <ListView> <ListView.View> <GridView> <GridViewColumn Header="A"/> </GridView> </ListView.View> <ListView.Items> <ListViewItem Content="Item 1"/> <ListViewItem Content="Item 2"/> <ListViewItem Content="Item 3"/> </ListView.Items> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListViewItem"> <Border CornerRadius="2" SnapsToDevicePixels="True" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"> <Border Name="InnerBorder" CornerRadius="1" BorderThickness="1"> <Grid> <Grid.RowDefinitions> <RowDefinition MaxHeight="11" /> <RowDefinition /> </Grid.RowDefinitions> <Rectangle Name="UpperHighlight" Visibility="Collapsed" Fill="#75FFFFFF" /> <GridViewRowPresenter Grid.RowSpan="2" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Grid> </Border> </Border> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="LightBlue"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </ListView.ItemContainerStyle> </ListView> </Grid> </Window> 或基础模型的一部分,因此我通常会尝试尽可能多地保留默认模板,并且只更改我关心的部分。它有点冗长,但应该做你想要的。