private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
        {
            GridViewColumnHeader column = sender as GridViewColumnHeader;
            String field = column.Tag as String;

            if (_CurSortCol != null)
            {
                AdornerLayer.GetAdornerLayer(_CurSortCol).Remove(_CurAdorner);
            }
            else if (_CurAdorner != null)
            {
                // clear sort icon from default column
                GridView gridView = (GridView)this._tree.View;
                GridViewColumn defColumn = gridView.Columns.Where(x => ((GridViewColumnHeader)x.Header).Tag.ToString() == DefaultColumnTag).FirstOrDefault();
                if (defColumn != null)
                {
                    AdornerLayer.GetAdornerLayer((GridViewColumnHeader)defColumn.Header).Remove(_CurAdorner);
                }
            }

            ListSortDirection newDir = ListSortDirection.Ascending;
            if (_CurSortCol == column && _CurAdorner.Direction == newDir)
                newDir = ListSortDirection.Descending;

            _CurSortCol = column;
            _CurAdorner = new SortAdorner(_CurSortCol, newDir);
            AdornerLayer.GetAdornerLayer(_CurSortCol).Add(_CurAdorner);

            //_sorter.SortColumn = field;
            //_sorter.SortDirection = newDir;
            //this._tree.Rows.Sort(_sorter);
            this._tree.Sort(field, newDir);

            //this._tree.Rows.RowItemsView.CustomSort = _sorter;
            //this._tree.Rows.RowItemsView.SortDescriptions.Clear();
            //this._tree.Rows.RowItemsView.SortDescriptions.Add(new SortDescription(_sorter.SortColumn, _sorter.SortDirection));
            //this._tree.Rows.RowItemsView.Refresh();
            //return;

            //_tree.Items.SortDescriptions.Add(new SortDescription(field, newDir));
            //ListCollectionView  view = (ListCollectionView ) CollectionViewSource.GetDefaultView(this._tree.ItemsSource);
            //if (view != null)
            //{
            //    _sorter.SortColumn = field;
            //    _sorter.SortDirection = newDir;

            //    view.CustomSort = _sorter;
            //    this._tree.Items.Refresh();
            //}
        }
        public void ApplyLayoutPreferences()
        {
            this.LayoutPreferencesApplied = true;

            // apply layout preferences
            WorklistViewModel viewModel = (WorklistViewModel)DataContext;
            if (viewModel != null)
            {
                UserPreferences.Instance.LayoutPreferences.ApplyWorklistColumnPreferences(viewModel.Type.ToString(), this._tree.View as GridView);
            }

            // display default sort column - DateTime
            GridView gridView = (GridView)this._tree.View;
            GridViewColumn defColumn = gridView.Columns.Where(x => ((GridViewColumnHeader)x.Header).Tag.ToString() == DefaultColumnTag).FirstOrDefault();
            if (defColumn != null)
            {
                GridViewColumnHeader header = defColumn.Header as GridViewColumnHeader;
                if (header.Column != null)
                {
                    _CurAdorner = new SortAdorner(header, ListSortDirection.Ascending);
                    AdornerLayer.GetAdornerLayer(header).Add(_CurAdorner);
                }
            }
        }