<Window x:Class="Wpf_GridHeaderStyle_sample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:Wpf_GridHeaderStyle_sample"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<ControlTemplate x:Key="tmpForThumb" TargetType="{x:Type Thumb}">
<Border>
<Rectangle Width="1" Name="rec">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0.3" EndPoint="1,1">
<GradientStop Color="Orange" Offset="0.22"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="rec" Property="Fill" Value="LightGreen"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
<Grid Name="g">
<Grid.Background>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Gold" Offset="0.3"/>
<GradientStop Color="LightYellow" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<Border Name="bd" Padding="{TemplateBinding Padding}">
<ContentPresenter Margin="5,4,1,3" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Border>
<Thumb Name="PART_HeaderGripper" Template="{StaticResource tmpForThumb}" HorizontalAlignment="Right" Margin="0,0,-1,0"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="g" Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="DeepPink" Offset="0.3"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--数据源-->
<c:Students x:Key="DBSource"/>
<!--ListViewItem的样式-->
<Style TargetType="{x:Type ListViewItem}">
<Style.Setters>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border x:Name="bd"
BorderThickness="1"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="True">
<GridViewRowPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="3"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.Setters>
<Setter TargetName="bd" Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0.22" EndPoint="0.5,1">
<GradientStop Color="LightGray" Offset="0.31"/>
<GradientStop Color="Gray" Offset="0.88"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger.Setters>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</Window.Resources>
<ListView x:Name="lv" ItemsSource="{StaticResource DBSource}">
<ListView.View>
<GridView AllowsColumnReorder="True">
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="姓名" Width="110"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Phone}" Header="联系电话" Width="125"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
关键点:要设置ListView的行样式,设置Listview的ItemContainerStyle属性,但在本例中,由于我把样式应用于所有的ListViewItem,故不用设置该属性。 <Window x:Class="Wpf_GridHeaderStyle_sample.Window1" xmlns="http://schemas.microsoft.com/winfx/200
一、
ListView
样式
和模板
ListView
的模板由三部分组成,分别为Thumb、GridViewColumn
Header
、
ListView
Item。其中Thumb在GridViewColumn
Header
的模板中,参考以下自定义模板:
1、GridViewColumn
Header
<Style TargetType="{x:Type GridViewColumn
Header
...
最近在做
WPF
项目,对
wpf
界面的
listview
进
行
数据绑定,并根据绑定
行
的数据属于的类型在
listview
的一列中用不同的图片进
行
区分。
好的,现在说一下具体使用步骤:
第一步,先定义要绑定列表需要的集合数据的类
public class FtpFileInformation
private bool isDirectory;
在
WPF
中的
ListView
非常强大,利用各种Template可以实现许多自定义的
样式
与功能,今天遇到一个自定义选中
样式
的问题,弄了半天才找到解决方法,分享给大家。
前台XAML代码:
1 <
ListView
Grid.Row="1" Name="LV_Test" SelectionMode="Multiple" Background="{x:Null}">
2 ...
可以通过修改
WPF
ListView
中每个Item的
样式
来实现自定义每一
行
的颜色。具体步骤如下:
1. 在XAML中定义
ListView
的ItemContainerStyle,
指定
ItemContainerStyle为
ListView
.ItemContainerStyle属性的值。例如:
<
ListView
x:Name="my
ListView
">
<
ListView
.ItemContainerStyle>
<Style TargetType="
ListView
Item">
<!--在这里定义Item的
样式
-->
</Style>
</
ListView
.ItemContainerStyle>
</
ListView
>
2. 在Style中添加一个Trigger,根据Item的数据内容来
设置
颜色。例如:
<Style TargetType="
ListView
Item">
<Style.Triggers>
<DataTrigger
Binding
="{
Binding
Status}" Value="New">
<
Setter
Property="Background" Value="Green"/>
</DataTrigger>
<DataTrigger
Binding
="{
Binding
Status}" Value="Completed">
<
Setter
Property="Background" Value="LightGray"/>
</DataTrigger>
</Style.Triggers>
</Style>
在这个例子中,根据绑定到
ListView
Item的数据对象的Status属性的值来
设置
Item的背景颜色。
希望这个回答对你有帮助!