Example #1
0
        static void Extend_Click(object sender, RoutedEventArgs e)
        {
            var gridViewColumnHeader = e.OriginalSource as GridViewColumnHeader;

            if (GetParent(gridViewColumnHeader) == null)
            {
                SetParent(gridViewColumnHeader, gridViewColumnHeader.FindParent <GridView>());
            }

            var parent = GetParent(gridViewColumnHeader);

            if (gridViewColumnHeader?.Column != null)
            {
                var direction = ListSortDirection.Ascending;
                if (gridViewColumnHeader.Role != GridViewColumnHeaderRole.Padding)
                {
                    if (gridViewColumnHeader != GridViewExtensions.GetLastClicked(parent))
                    {
                        direction = ListSortDirection.Ascending;
                    }
                    else
                    {
                        direction
                            = GetLastDirection(gridViewColumnHeader) == ListSortDirection.Ascending
                        ? ListSortDirection.Descending
                        : ListSortDirection.Ascending;
                    }
                }

                string header = gridViewColumnHeader.Column.Header as string;

                var listView = gridViewColumnHeader.FindParent <ListView>();
                if (listView != null)
                {
                    ItemsControlExtensions.SetSortDirection(listView, direction);
                    ItemsControlExtensions.SetSortName(listView, header);
                }

                SetSortDirection(gridViewColumnHeader, direction);

                // Remove arrow from previously sorted header
                if (GridViewExtensions.GetLastClicked(parent) != null && GridViewExtensions.GetLastClicked(parent) != gridViewColumnHeader)
                {
                    SetSortDirection(GridViewExtensions.GetLastClicked(parent), null);
                }

                GridViewExtensions.SetLastClicked(parent, gridViewColumnHeader);
                SetLastDirection(gridViewColumnHeader, direction);
            }
        }