构建数据源
XML
<Window.Resources>
<x:ArrayExtension x:Key="stringList"
xmlns="clr-namespace:System;assembly=mscorlib"
Type="String">
<String>第一行</String>
<String>第二行</String>
<String>第三行</String>
<String>第四行</String>
</x:ArrayExtension>
</Window.Resources>
- <ListView.ItemContainerStyle> + <ListView.View> 可以生效,背景色变颜色,
ListView.ItemContainerStyle 中存放触发器
ListView.View中存放数据
这样只能按列显示多列多行,不能多行多列作为一项显示
如下所示:
XML
<ListView Grid.Row="0" Name="ItemList" ItemsSource="{StaticResource stringList}" >
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="FontSize" Value="15" />
<Setter Property="Margin" Value="0,-40,0,40" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#9C71B9" />
<Setter Property="Foreground" Value="white" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Green" />
<Setter Property="Foreground" Value="white" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="#757575" />
<Setter Property="Foreground" Value="black" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding}" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
- <ListView.ItemContainerStyle> + <ListView.ItemTemplate> 不生效,背景色不改变颜色,
ListView.ItemContainerStyle 中存放触发器
ListView.ItemTemplate中存放数据
如下所示:
XML
<ListView Name="ItemList" ItemsSource="{StaticResource stringList}">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="FontSize" Value="15" />
<Setter Property="Margin" Value="0,-40,0,40" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#9C71B9" />
<Setter Property="Foreground" Value="white" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Green" />
<Setter Property="Foreground" Value="white" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding }" Height="30" Name="Label_Amount" Width="100" Foreground="White"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
- 只有ListView.ItemContainerStyle,可以生效
数据放在<Setter Property="Template">里,触发器放在 <Style.Triggers>,如下所示:
XML
<ListView Width="300" Height="400" x:Name="celist" ItemsSource="{StaticResource stringList}" Background="Black">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Background="{TemplateBinding Background}">
<StackPanel >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding }" Height="30" Name="Label_Amount" Width="100" Foreground="White"/>
</StackPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Text="{Binding }" Name="Label_ShortDescription" Width="200" Foreground="White"/>
</StackPanel>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#9C71B9" />
<Setter Property="Foreground" Value="white" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Green" />
<Setter Property="Foreground" Value="white" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>