我很奇怪的是,微軟那厮是怎麼搞的,Blend裡面居然不能編輯GridView的樣式,十萬般無奈之下,隻好手寫XAML來處理了。
要想知道一個控件的樣式是如何設定,看控件類的定義很重要,我們來看看GridView是如何定義的:
[StyleTypedPropertyAttribute(Property = "ColumnHeaderContainerStyle", StyleTargetType = typeof(GridViewColumnHeader))][ContentPropertyAttribute("Columns")]public class GridView : ViewBase, IAddChild
從上面的定義中找到兩個關鍵點:
一、設定列标題的樣式的屬性——ColumnHeaderContainerStyle;
二、目标類型——GridViewColumnHeader
好,有了這些資訊,我們就好辦了,把樣式定義到資源中
<Window.Resources>
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Orange" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
<c:Emps x:Key="epc" />
</Window.Resources>
接着我們定義ListView,把樣式應用到Gridview的ColumnHeaderContainerStyle屬性上。
<ListView ItemsSource="{Binding Source={StaticResource epc}}">
<ListView.View>
<GridView AllowsColumnReorder="True" ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="員工姓名"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Age}" Header="員工年齡"/>
</GridView>
</ListView.View>
</ListView>