Ejemplo n.º 1
0
        private void ReorderColumns()
        {
            _lockGridColumnsCollectionChanged = true;

            for (int c = 0; c < Grid.Columns.Count; c++)
            {
                var column = Grid.Columns.IndexOf(col => SortBehavior.GetFixedOrder(col) == c);
                if (column == -1)
                {
                    break;
                }
                Grid.Columns.Move(column, c);
            }

            int i = 0;

            lock (ItemsSource)
            {
                foreach (string columnData in ItemsSource)
                {
                    for (int j = i; j < Grid.Columns.Count; j++)
                    {
                        var column = Grid.Columns[j];
                        if (GetColumnId(column) == columnData)
                        {
                            Grid.Columns.Move(j, i + _staticColumnsCount);
                            i++;
                            break;
                        }
                    }
                }
            }
            _lockGridColumnsCollectionChanged = false;
        }
Ejemplo n.º 2
0
 private void gridView_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     if (!_lockGridColumnsCollectionChanged && e.Action == NotifyCollectionChangedAction.Move)
     {
         var oldIndex = e.OldStartingIndex - _staticColumnsCount;
         var newIndex = Math.Max(0, e.NewStartingIndex - _staticColumnsCount);
         if (oldIndex >= 0)
         {
             var collection = (ObservableCollection <string>)ItemsSource;
             collection.Move(oldIndex, newIndex);
         }
         else if (SortBehavior.GetFixedOrder(Grid.Columns[e.NewStartingIndex]) != -1)
         {
             ReorderColumns();
         }
     }
 }
Ejemplo n.º 3
0
        private void CreateColumnsFrom(IEnumerable <string> keys)
        {
            foreach (var key in keys)
            {
                if (!Grid.Columns.Any(c => c.Header.Equals(key)))
                {
                    var expression   = string.Format(ColumnsFormat, key);
                    var binding      = new Binding(expression);
                    var cellTemplate = new DataTemplate();
                    FrameworkElementFactory cbFactory = new FrameworkElementFactory(typeof(CheckBox));
                    cbFactory.SetBinding(CheckBox.IsCheckedProperty, binding);
                    cellTemplate.VisualTree = cbFactory;

                    var column = new GridViewColumn()
                    {
                        Header       = key,
                        CellTemplate = cellTemplate
                    };
                    SetColumnId(column, key);
                    SortBehavior.SetSortExpression(column, expression);
                    Grid.Columns.Add(column);
                }
            }
        }