GridViewColumnHeader应用排序样式

时间:2012-03-17 00:11:05

标签: c# wpf styles

我的xaml中有以下列表视图:

    <ListView  Name="listView1">
        <ListView.View>
            <GridView>
                    <GridViewColumn Width="Auto" Header="Name"  
         DisplayMemberBinding="{Binding nombre}" />
                <GridViewColumn Width="200" Header="LastName"  
         DisplayMemberBinding="{Binding razonSocial}" />

         // etc....

我有一个绑定到列表视图的ObservableCollection。我在代码后面创建了绑定。因此,我对该集合所做的任何更改都将反映在列表视图中。此外,如果我想对列表视图进行排序,我将只对ObservableCollection进行排序。

当用户点击gridviewcolumnheader时,我对listview进行排序:

        listView1.AddHandler(GridViewColumnHeader.ClickEvent, new RoutedEventHandler((a, b) =>
        {

            // check to see what column header was clicked
            string bindingProperty =
               ((Binding)(((GridViewColumnHeader)(b.OriginalSource)).Column.DisplayMemberBinding)).Path.Path;




             // using dyniamic linq libraries or the example located at
             //  http://stackoverflow.com/a/233505/637142
             // I will be able to sort my collection of objects by nowing the property name


        }));

无论如何,我想将不同的样式应用于刚刚单击的GridViewColumnHeader。我相信应该已有一个现有的模板。

我正在寻找类似的东西:

   GridViewColumnHeader a = "gridviewColumnHeader that was clicked"

   a.Style = "orderByAscGridViewColumnTemplate"

1 个答案:

答案 0 :(得分:1)

代码背后:

        listView1.AddHandler(GridViewColumnHeader.ClickEvent, new RoutedEventHandler((a, e) =>
        {


            GridViewColumnHeader headerClicked =
              e.OriginalSource as GridViewColumnHeader;

            headerClicked.Column.HeaderTemplate =
                      Resources["HeaderTemplateArrowUp"] as DataTemplate;

XAML:

<UserControl.Resources>

    <DataTemplate x:Key="HeaderTemplateArrowUp">
        <DockPanel>
            <TextBlock HorizontalAlignment="Center" Text="{Binding}"/>
            <Path x:Name="arrow"
       StrokeThickness = "1"                                     
       Fill            = "gray"
       Data            = "M 5,10 L 15,10 L 10,5 L 5,10"/>
        </DockPanel>
    </DataTemplate>


</UserControl.Resources>