继续聊WPF——设置网格控件列标题的样式

  

我很奇怪的是,微软那厮是怎么搞的,Blend里面居然不能编辑GridView的样式,十万般无奈之下,只好手写XAML来处理了。

要想知道一个控件的样式是如何设置,看控件类的定义很重要,我们来看看GridView是如何定义的:

  1. [StyleTypedPropertyAttribute(Property = "ColumnHeaderContainerStyle", StyleTargetType = typeof(GridViewColumnHeader))][ContentPropertyAttribute("Columns")]public class GridView : ViewBase, IAddChild  
从上面的定义中找到两个关键点:
一、设置列标题的样式的属性——ColumnHeaderContainerStyle;
二、目标类型——GridViewColumnHeader
好,有了这些信息,我们就好办了,把样式定义到资源中
  1. <Window.Resources>  
  2.     <Style x:Key="st" TargetType="GridViewColumnHeader">  
  3.         <Style.Setters>  
  4.             <Setter Property="Background">  
  5.                 <Setter.Value>  
  6.                     <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">  
  7.                         <GradientStop Color="White" Offset="0"/>  
  8.                         <GradientStop Color="Orange" Offset="1"/>  
  9.                     </LinearGradientBrush>  
  10.                 </Setter.Value>  
  11.             </Setter>  
  12.         </Style.Setters>  
  13.     </Style>  
  14.     <c:Emps x:Key="epc" />  
  15. </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>
 
 

posted @ 2017-05-09 21:28  谢维开  阅读(168)  评论(0编辑  收藏  举报
友情链接:回力鞋官网 | 中老年高档女装 | 新航道 | 英语课堂游戏 | 托福和雅思