GridViewColumnHeader применить отсортированный стиль - PullRequest
0 голосов
/ 17 марта 2012

У меня есть следующий список в моем 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 как:

        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 Ответ

1 голос
/ 17 марта 2012

Код сзади:

        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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...