Ejemplo n.º 1
0
        private void Label_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Label             lb = (Label)sender;
            string            bindingProperty = "";
            ListSortDirection sortDirection   = ListSortDirection.Ascending;
            string            strn            = (string)(lb.Tag);

            if (strn == "0")
            {
                if (Paixiflag[0] == 0)
                {
                    Paixiflag[0]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[0]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "Name";
            }
            else if (strn == "1")
            {
                if (Paixiflag[1] == 0)
                {
                    Paixiflag[1]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[1]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "Description";
            }

            SortDescriptionCollection sdc = ListViewInfectType.Items.SortDescriptions;

            if (sdc.Count > 0)
            {
                SortDescription sd = sdc[0];
                sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
                //判断此列当前的排序方式:升序0,倒序1,并取反进行排序。
                sdc.Clear();
            }

            sdc.Add(new SortDescription(bindingProperty, sortDirection));
            var temp = new ObservableCollection <InfectTypeData>();

            for (int i = 0; i < ListViewInfectType.Items.Count; i++)
            {
                temp.Add((InfectTypeData)ListViewInfectType.Items[i]);
            }
            Datalist.Clear();
            Datalist = temp;
            ListViewInfectType.ItemsSource = Datalist;
            sdc.Clear();
        }
Ejemplo n.º 2
0
        public static void ColumnSort_Click(object sender, RoutedEventArgs e)
        {
            if (!(e.OriginalSource is GridViewColumnHeader))
            {
                return;
            }

            GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader).Column;   //得到单击的列

            if (clickedColumn != null)
            {
                string bindingProperty = (clickedColumn.DisplayMemberBinding as Binding).Path.Path; //得到单击列所绑定的属性

                SortDescriptionCollection sdc           = ((ListView)sender).Items.SortDescriptions;
                ListSortDirection         sortDirection = ListSortDirection.Ascending;
                if (sdc.Count > 0)
                {
                    SortDescription sd = sdc[0];
                    sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);  //判断此列当前的排序方式:升序0,倒序1,并取反进行排序。
                    sdc.Clear();
                }

                sdc.Add(new SortDescription(bindingProperty, sortDirection));
            }
        }
Ejemplo n.º 3
0
        private void PrepareColumn(GridViewColumn column)
        {
            if (column.Header is GridViewColumnHeader header)
            {
                header.Click += (_, __) =>
                {
                    string sortBy = header.Tag as string;

                    ICollectionView           dataView         = CollectionViewSource.GetDefaultView(Parent.Items);
                    SortDescriptionCollection sortDescriptions = dataView.SortDescriptions;

                    if (CurrentOrganizedHeader != null)
                    {
                        AdornerLayer.GetAdornerLayer(CurrentOrganizedHeader).Remove(CurrentAdorner);
                        sortDescriptions.Clear();
                    }

                    ListSortDirection newDir = ListSortDirection.Ascending;
                    if (CurrentOrganizedHeader == header && CurrentAdorner.Direction == newDir)
                    {
                        newDir = ListSortDirection.Descending;
                    }

                    CurrentOrganizedHeader = header;
                    CurrentAdorner         = new SortAdorner(header, newDir);
                    AdornerLayer.GetAdornerLayer(header).Add(CurrentAdorner);
                    sortDescriptions.Add(new SortDescription(sortBy, newDir));
                }
            }
            ;
        }
    }
Ejemplo n.º 4
0
        private void AddSortRule()
        {
            SortDescriptionCollection sdc = ReportListBox.Items.SortDescriptions;

            //SortDescriptionCollection sdc = new SortDescriptionCollection();

            /*if (sdc.Count > 0)
             * {
             *  SortDescription sd = sdc[0];
             *  sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
             *  //判断此列当前的排序方式:升序0,倒序1,并取反进行排序。
             *  sdc.Clear();
             * }*/
            sdc.Clear();
            sdc.Add(new SortDescription("ShiftWork", ListSortDirection.Ascending));
            sdc.Add(new SortDescription("Area", ListSortDirection.Ascending));
            sdc.Add(new SortDescription("BedId", ListSortDirection.Ascending));
            sdc.Add(new SortDescription("PatientName", ListSortDirection.Ascending));
            sdc.Add(new SortDescription("Method", ListSortDirection.Ascending));

            var sdc1 = PatientGroupComboBox.Items.SortDescriptions;

            sdc1.Clear();
            sdc1.Add(new SortDescription("", ListSortDirection.Ascending));
        }
Ejemplo n.º 5
0
 private void lvServices_GridViewColumnHeader_Click(object sender, RoutedEventArgs e)//sort
 {
     //ref:WPF中对ListView排序
     //http://www.cnblogs.com/huihui0630/archive/2008/10/22/1317140.html
     if (e.OriginalSource is GridViewColumnHeader)
     {
         //Get clicked column
         GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader).Column;
         if (clickedColumn != null)
         {
             string bindingProperty;
             //Get binding property of clicked column
             if (clickedColumn.DisplayMemberBinding is System.Windows.Data.Binding)
             {
                 bindingProperty = (clickedColumn.DisplayMemberBinding as System.Windows.Data.Binding).Path.Path;
             }
             else//multibinding for Output Tile Count column
             {
                 System.Windows.Data.Binding binding = (clickedColumn.DisplayMemberBinding as System.Windows.Data.MultiBinding).Bindings[0] as System.Windows.Data.Binding;
                 bindingProperty = binding.Path.Path;
             }
             SortDescriptionCollection sdc           = lvServices.Items.SortDescriptions;
             ListSortDirection         sortDirection = ListSortDirection.Ascending;
             if (sdc.Count > 0)
             {
                 SortDescription sd = sdc[0];
                 sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
                 sdc.Clear();
             }
             sdc.Add(new SortDescription(bindingProperty, sortDirection));
         }
     }
 }
Ejemplo n.º 6
0
        public void SortBy(GridViewColumnHeader columnHeader)
        {
            if (columnHeader.Column == null)
            {
                return;
            }

            var propertyName = GetBindingPropertyName(columnHeader);

            if (sortingColumnHeader != null)
            {
                sortDescriptions.Clear();
                AttachedProperty.SetSortDirection(sortingColumnHeader, null);
            }

            if (sortingColumnHeader != columnHeader && !String.IsNullOrEmpty(propertyName))
            {
                direction           = ListSortDirection.Ascending;
                sortingColumnHeader = columnHeader;
            }
            else if (direction == ListSortDirection.Ascending)
            {
                direction = ListSortDirection.Descending;
            }
            else
            {
                sortingColumnHeader = null;
            }

            if (sortingColumnHeader != null)
            {
                sortDescriptions.Add(new SortDescription(propertyName, direction));
                AttachedProperty.SetSortDirection(sortingColumnHeader, direction);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 点击listview列进行排序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView_Click_1(object sender, RoutedEventArgs e)
        {
            if (e.OriginalSource is GridViewColumnHeader)
            {
                //获得点击的列
                GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader).Column;
                if (clickedColumn != null)
                {
                    //Get binding property of clicked column
                    string bidingProperty = (clickedColumn.DisplayMemberBinding as Binding).Path.Path;

                    //获得listview项是如何排序的
                    SortDescriptionCollection sdc = this.listView.Items.SortDescriptions;

                    //按升序进行排序
                    ListSortDirection sortDirection = ListSortDirection.Ascending;
                    if (sdc.Count > 0)
                    {
                        SortDescription sd = sdc[0];
                        sortDirection = (ListSortDirection)(((-(int)sd.Direction) + 1) % 2);//((((int)sd.Direction) + 1) % 2),原实例没有-号
                        sdc.Clear();
                    }
                    sdc.Add(new SortDescription(bidingProperty, sortDirection));
                }
            }
        }
Ejemplo n.º 8
0
        private void SaveTableSortOrder()
        {
            if (_itemList == null)
            {
                return;
            }
            if (_itemList.SortDescriptions.Count <= 0)
            {
                return;
            }

            if (_sortDescriptionCollection == null)
            {
                _sortDescriptionCollection = new SortDescriptionCollection();
            }

            var sortDescriptionArray = new SortDescription[_itemList.SortDescriptions.Count];

            _itemList.SortDescriptions.CopyTo(sortDescriptionArray, 0);

            _sortDescriptionCollection.Clear();
            foreach (var sortDescription in sortDescriptionArray)
            {
                _sortDescriptionCollection.Add(sortDescription);
            }
        }
        private void ColumnHeader_Click(object sender, RoutedEventArgs e)
        {
            var clickedHeader = e.OriginalSource as GridViewColumnHeader;

            if (clickedHeader != null)
            {
                //Get clicked column
                GridViewColumn clickedColumn = clickedHeader.Column;
                if (clickedColumn != null)
                {
                    var binding = clickedColumn.DisplayMemberBinding as Binding;
                    //Get binding property of clicked column
                    string bindingProperty = binding.Path.Path;

                    var lv = sender as ListView;
                    SortDescriptionCollection sdc           = lv.Items.SortDescriptions;
                    ListSortDirection         sortDirection = ListSortDirection.Ascending;
                    if (sdc.Count > 0)
                    {
                        SortDescription sd = sdc[0];
                        sortDirection = sd.Direction == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending;
                        sdc.Clear();
                    }
                    sdc.Add(new SortDescription(bindingProperty, sortDirection));
                }
            }
        }
 /// <summary>
 /// Copies the <paramref name="from"/> collection to the <paramref name="to"/> collection
 /// </summary>
 /// <param name="from">The sort descriptions to copy from</param>
 /// <param name="to">The sort descriptions to copy to</param>
 private static void CopySortDescriptions(SortDescriptionCollection from, SortDescriptionCollection to)
 {
     to.Clear();
     foreach (SortDescription sd in from)
     {
         to.Add(sd);
     }
 }
Ejemplo n.º 11
0
        public static void SetSortDescription(SortDescriptionCollection to, SortDescriptionCollection from)
        {
            to.Clear();

            foreach (var sd in from)
            {
                to.Add(sd);
            }
        }
Ejemplo n.º 12
0
        private void SortBy(params string[] keys)
        {
            SortDescriptionCollection desc = Items.SortDescriptions;

            desc.Clear();
            foreach (string key in keys)
            {
                desc.Add(new SortDescription(key, ListSortDirection.Ascending));
            }
        }
 /// <summary>
 /// Resets the <paramref name="sortDescriptions"/> collection to match the <paramref name="sortDescriptors"/> collection.
 /// </summary>
 /// <param name="sortDescriptions">The collection to reset</param>
 /// <param name="sortDescriptors">The collection to match</param>
 private static void ResetToSortDescriptors(SortDescriptionCollection sortDescriptions, SortDescriptorCollection sortDescriptors)
 {
     sortDescriptions.Clear();
     foreach (SortDescriptor descriptor in sortDescriptors)
     {
         SortDescription?description = SortCollectionManager.GetDescriptionFromDescriptor(descriptor);
         if (description.HasValue)
         {
             sortDescriptions.Add(description.Value);
         }
     }
 }
Ejemplo n.º 14
0
        private void RenderSort(SortDescriptionCollection sorts, GridViewColumn column, ListSortDirection direction)
        {
            Uri uri = new Uri("/Dev2Be.Toolkit;component/Themes/Glyphs.xaml", UriKind.Relative);
            ResourceDictionary dictionary = Application.LoadComponent(uri) as ResourceDictionary;

            column.HeaderTemplate = (DataTemplate)dictionary["HeaderTemplateSort" + direction];

            if (column.DisplayMemberBinding is Binding columnBinding)
            {
                sorts.Clear();
                sorts.Add(new SortDescription(columnBinding.Path.Path, direction));
                lastColumnSorted = column;
            }
        }
Ejemplo n.º 15
0
        // 对listview中的配置列表进行排序
        public void SortListViewItems()
        {
            SortDescriptionCollection sdc           = listView.Items.SortDescriptions;
            ListSortDirection         sortDirection = ListSortDirection.Ascending;

            if (sdc.Count > 0)
            {
                SortDescription sd = sdc[0];
                sortDirection = (ListSortDirection)(((int)sd.Direction + 1) % 2);
                sdc.Clear();
            }

            sdc.Add(new SortDescription("Brand", ListSortDirection.Ascending));
        }
Ejemplo n.º 16
0
 private void OnSorting(object sender, DataGridSortingEventArgs e)
 {
     // do special sorting for Name column
     if ((string)e.Column.Header == "Name")
     {
         DataGrid dataGrid = sender as DataGrid;
         SortDescriptionCollection sort = dataGrid.Items.SortDescriptions;
         if (e.Column.SortDirection == ListSortDirection.Ascending)
         {
             e.Column.SortDirection = ListSortDirection.Descending;
             sort.Clear();
             sort.Add(new SortDescription("IsDirectory", ListSortDirection.Descending));
             sort.Add(new SortDescription("Name", ListSortDirection.Ascending));
         }
         else
         {
             e.Column.SortDirection = ListSortDirection.Ascending;
             sort.Clear();
             sort.Add(new SortDescription("IsDirectory", ListSortDirection.Ascending));
             sort.Add(new SortDescription("Name", ListSortDirection.Descending));
         }
         e.Handled = true;
     }
 }
        public void SortDescriptionCollectionClearTest()
        {
            SortDescriptionCollection sdc = new SortDescriptionCollection();
            bool eventFired = false;

            sdc.Add(new SortDescription("A", ListSortDirection.Ascending));

            ((INotifyCollectionChanged)sdc).CollectionChanged += delegate(object sender, NotifyCollectionChangedEventArgs e) {
                Assert.AreEqual(NotifyCollectionChangedAction.Reset, e.Action, "CLR_#0");
                eventFired = true;
            };

            sdc.Clear();

            Assert.IsTrue(eventFired, "CLR_#1");
        }
Ejemplo n.º 18
0
 public static void Sort(GridViewColumn clickedColumn, ItemCollection itemCollection)
 {
     if (clickedColumn != null)
     {
         //Get binding property of clicked column
         string bindingProperty                  = (clickedColumn.DisplayMemberBinding as Binding).Path.Path;
         SortDescriptionCollection sdc           = itemCollection.SortDescriptions;
         ListSortDirection         sortDirection = ListSortDirection.Ascending;
         if (sdc.Count > 0)
         {
             SortDescription sd = sdc[0];
             sortDirection = sd.Direction == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending;
             sdc.Clear();
         }
         sdc.Add(new SortDescription(bindingProperty, sortDirection));
     }
 }
        private void Sort(GridViewColumnHeader columnHeader, ListSortDirection direction)
        {
            ICollectionView           dataView         = CollectionViewSource.GetDefaultView(lsvItems.ItemsSource);
            SortDescriptionCollection sortDescriptions = dataView.SortDescriptions;

            sortDescriptions.Clear();

            if (columnHeader == checkBoxGridViewColumnHeader)
            {
                sortDescriptions.Add(new SortDescription("Enabled", direction));
                sortDescriptions.Add(new SortDescription("Id", ListSortDirection.Ascending));
            }
            else
            {
                string propertyName = columnHeader.Content.ToString();

                if (propertyName != "Id")
                {
                    propertyName = "Title";
                }

                sortDescriptions.Add(new SortDescription(propertyName, direction));
            }

            dataView.Refresh();

            if (direction == ListSortDirection.Ascending)
            {
                columnHeader.Column.HeaderTemplate = Resources["gridViewHeaderArrowUpTemplate"] as DataTemplate;
            }
            else
            {
                columnHeader.Column.HeaderTemplate = Resources["gridViewHeaderArrowDownTemplate"] as DataTemplate;
            }

            if (_lastClickedHeader != null &&
                _lastClickedHeader != columnHeader)
            {
                _lastClickedHeader.Column.HeaderTemplate = null;
            }

            _lastClickedHeader = columnHeader;
            _lastDirection     = direction;
        }
Ejemplo n.º 20
0
 private void List_OnClick(object sender, RoutedEventArgs e)
 {
     if (e.OriginalSource is GridViewColumnHeader)
     {
         GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader).Column;
         if (clickedColumn != null)
         {
             string bindingProperty                  = (clickedColumn.DisplayMemberBinding as Binding).Path.Path;
             SortDescriptionCollection sdc           = this.list.Items.SortDescriptions;
             ListSortDirection         sortDirection = ListSortDirection.Ascending;
             if (sdc.Count > 0)
             {
                 SortDescription sd = sdc[0];
                 sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
                 sdc.Clear();
             }
             sdc.Add(new SortDescription(bindingProperty, sortDirection));
         }
     }
 }
Ejemplo n.º 21
0
        /// <summary>Raises the <see cref="E:System.Windows.Controls.DataGrid.Sorting" /> event.</summary>
        /// <param name="eventArgs">The data for the event.</param>
        protected override void OnSorting(DataGridSortingEventArgs eventArgs)
        {
            if (SortController != null)
            {
                eventArgs.Handled = true;

                // Can't sort right now, just update columns sort definitions.
                if (!SortController.CanSort())
                {
                    UpdateColumnSortDefinitions();

                    return;
                }

                // Just in case, remove data grid sorting descriptions.
                if (Items.SortDescriptions.Any())
                {
                    Items.SortDescriptions.Clear();
                }

                // If user is holding shift, clear all columns sorting.
                if ((Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.Shift)
                {
                    _sortDescriptions.Clear();
                }

                // Update our sort record.
                UpdateSortDefinitions(eventArgs.Column);

                // Actually do the sorting.
                if (SortController.OnSorting(_sortDescriptions))
                {
                    Items.Refresh();
                }
            }

            else
            {
                base.OnSorting(eventArgs);
            }
        }
Ejemplo n.º 22
0
        private void SpeedListView_OnClick(object sender, RoutedEventArgs e)
        {
            if (e.OriginalSource is GridViewColumnHeader header)
            {
                //获得点击的列
                GridViewColumn clickedColumn = header.Column;
                if (clickedColumn != null)
                {
                    string bindingProperty = (clickedColumn.DisplayMemberBinding as Binding).Path.Path;
                    SortDescriptionCollection sortDescription = SpeedListView.Items.SortDescriptions;

                    ListSortDirection sortDirection = ListSortDirection.Ascending;
                    if (sortDescription.Count > 0)
                    {
                        SortDescription sort = sortDescription[0];
                        sortDirection = (ListSortDirection)(((int)sort.Direction + 1) % 2);
                        sortDescription.Clear();
                    }
                    sortDescription.Add(new SortDescription(bindingProperty, sortDirection));
                }
            }
        }
Ejemplo n.º 23
0
 private void lvServices_GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
 {
     if (e.OriginalSource is GridViewColumnHeader)
     {
         //Get clicked column
         GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader).Column;
         if (clickedColumn != null)
         {
             //Get binding property of clicked column
             string bindingProperty                  = (clickedColumn.DisplayMemberBinding as System.Windows.Data.Binding).Path.Path;
             SortDescriptionCollection sdc           = lvServices.Items.SortDescriptions;
             ListSortDirection         sortDirection = ListSortDirection.Ascending;
             if (sdc.Count > 0)
             {
                 SortDescription sd = sdc[0];
                 sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
                 sdc.Clear();
             }
             sdc.Add(new SortDescription(bindingProperty, sortDirection));
         }
     }
 }
Ejemplo n.º 24
0
        private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
        {
            if (e.OriginalSource is GridViewColumnHeader)
            {
                //Get clicked column
                GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader).Column;
                if (clickedColumn != null)
                {
                    //Get binding property of clicked column
                    string bindingProperty                  = (clickedColumn.DisplayMemberBinding as Binding).Path.Path;
                    SortDescriptionCollection sdc           = this.lvDirectory.Items.SortDescriptions;
                    ListSortDirection         sortDirection = ListSortDirection.Ascending;
                    if (sdc.Count > 0)
                    {
                        SortDescription sd = sdc[0];
                        sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
                        sdc.Clear();
                    }
                    RemoveUPNode();
                    sdc.Add(new SortDescription(bindingProperty, sortDirection));
                    AddUPNode();

                    GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;

                    if (sortDirection == ListSortDirection.Ascending)
                    {
                        headerClicked.Column.HeaderTemplate =
                            Resources["ListViewHeaderTemplateDescendingSorting"] as DataTemplate;
                    }
                    else
                    {
                        headerClicked.Column.HeaderTemplate =
                            Resources["ListViewHeaderTemplateAscendingSorting"] as DataTemplate;
                    }
                }
            }
        }
Ejemplo n.º 25
0
 private void allProcessesListView_Click(object sender, RoutedEventArgs e)
 {
     if (e.OriginalSource is GridViewColumnHeader)
     {
         //获取点击的头列
         GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader).Column;
         if (clickedColumn != null && clickedColumn.Header.ToString() != "选择")
         {
             //获取绑定属性
             string bindingProperty;
             bindingProperty = (clickedColumn.DisplayMemberBinding as Binding).Path.Path;
             SortDescriptionCollection sdc           = allProcessesListView.Items.SortDescriptions;
             ListSortDirection         sortDirection = ListSortDirection.Ascending;
             if (sdc.Count > 0)
             {
                 SortDescription sd = sdc[0];
                 sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
                 sdc.Clear();
             }
             if (sortDirection == ListSortDirection.Ascending)
             {
                 clickedColumn.HeaderTemplate = Resources["HeaderTemplateArrowUp"] as DataTemplate;
             }
             else if (sortDirection == ListSortDirection.Descending)
             {
                 clickedColumn.HeaderTemplate = Resources["HeaderTemplateArrowDown"] as DataTemplate;
             }
             if (_lastHeaderClicked != null && _lastHeaderClicked != clickedColumn)
             {
                 _lastHeaderClicked.HeaderTemplate = null;
             }
             sdc.Add(new SortDescription(bindingProperty, sortDirection));
             _lastHeaderClicked = clickedColumn;
         }
     }
 }
    internal static void ToggleColumnSort(
      DataGridContext dataGridContext,
      SortDescriptionCollection sortDescriptions,
      ColumnCollection columns,
      ColumnBase column,
      bool shiftUnpressed )
    {
      if( column == null )
        throw new ArgumentNullException( "column" );

      Debug.Assert( ( dataGridContext != null ) || ( column.ParentDetailConfiguration != null ) );

      if( ( dataGridContext == null ) && ( column.ParentDetailConfiguration == null ) )
        throw new DataGridInternalException( "DataGridContext or ParentDetailConfiguration can't be null." );

      DataGridContext parentDataGridContext = ( dataGridContext == null ) ? null : dataGridContext.ParentDataGridContext;

      // Defer the RestoreState of each DataGridContext of the same level
      // to ensure all the DataGridContext will be correctly restored once
      // all of them are completely resorted
      HashSet<IDisposable> deferRestoreStateDisposable = new HashSet<IDisposable>();

      if( parentDataGridContext != null )
      {
        foreach( DataGridContext childContext in parentDataGridContext.GetChildContexts() )
        {
          deferRestoreStateDisposable.Add( childContext.DeferRestoreState() );
        }
      }

      IDisposable deferResortHelper = ( dataGridContext == null ) ? null :
        SortingHelper.DeferResortHelper( dataGridContext.ItemsSourceCollection, dataGridContext.Items, sortDescriptions );

      //this will ensure that all DataGridCollectionViews mapped to this SortDescriptions collection will only refresh their sorting once!
      SortDirection newSortDirection = column.SortDirection;
      if( ( shiftUnpressed ) &&
          ( ( column.SortIndex == -1 ) || ( sortDescriptions.Count > 1 ) ) )
        sortDescriptions.Clear();

      switch( newSortDirection )
      {
        case SortDirection.None:
          newSortDirection = SortDirection.Ascending;
          break;
        case SortDirection.Ascending:
          newSortDirection = SortDirection.Descending;
          break;

        case SortDirection.Descending:
          newSortDirection = SortDirection.None;
          break;
      }

      SortingHelper.ApplyColumnSort( dataGridContext, sortDescriptions, columns, column, newSortDirection );

      if( deferResortHelper != null )
      {
        //end of the DeferResort(), any DataGridCollectionView listening to the SortDescriptions instance will refresh its sorting!
        deferResortHelper.Dispose();
      }

      foreach( IDisposable disposable in deferRestoreStateDisposable )
      {
        try
        {
          // Try/Catch to ensure all contexts are restored
          disposable.Dispose();
        }
        catch( Exception )
        {
        }
      }

      deferRestoreStateDisposable.Clear();
    }
Ejemplo n.º 27
0
        private void RenderSort(SortDescriptionCollection sorts, GridViewColumn column, ListSortDirection direction)
        {
            column.HeaderTemplate = (DataTemplate)ListViewOutput.FindResource("HeaderTemplate" + direction);

            Binding columnBinding = column.DisplayMemberBinding as Binding;
            if (columnBinding != null) {
                sorts.Clear();
                sorts.Add(new SortDescription(columnBinding.Path.Path, direction));
                _lastColumnSorted = column;
            }
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Renders the triangle next to the columns header
        /// </summary>
        /// <param name="sorts">The SortDescriptions of the Items of the ListView</param>
        /// <param name="column">The column that was clicked on</param>
        /// <param name="direction">The Sort Direction</param>
        /// <param name="lastColumnSorted">The last column that was sorted</param>
        private static void RenderSort(SortDescriptionCollection sorts, GridViewColumn column, ListSortDirection direction, ref GridViewColumn lastColumnSorted)
        {
            if (column == null) return;
            column.HeaderTemplate = (DataTemplate)App.Current.FindResource("HeaderTemplate" + direction);

            System.Windows.Data.Binding columnBinding = column.DisplayMemberBinding as System.Windows.Data.Binding;
            if (columnBinding != null)
            {
                sorts.Clear();
                sorts.Add(new SortDescription(columnBinding.Path.Path, direction));
                lastColumnSorted = column;
            }
        }
      private void SynchronizeDetailSortDescriptions( SortDescriptionCollection masterSortDescriptions, SortDescriptionCollection detailSortDescriptions,
                                                      FieldNameMap itemPropertyMap )
      {
        ColumnSortCommand.ThrowIfNull( masterSortDescriptions, "masterSortDescriptions" );
        ColumnSortCommand.ThrowIfNull( detailSortDescriptions, "detailSortDescriptions" );
        ColumnSortCommand.ThrowIfNull( itemPropertyMap, "itemPropertyMap" );

        int masterSortDescriptionsCount = masterSortDescriptions.Count;
        if( masterSortDescriptionsCount > 0 )
        {
          int insertionIndex = 0;

          for( int i = 0; i < masterSortDescriptionsCount; i++ )
          {
            var sortDescription = masterSortDescriptions[ i ];

            string detailPropertyName;
            if( !itemPropertyMap.TryGetItemPropertyName( sortDescription.PropertyName, out detailPropertyName ) )
              continue;

            var detailDirection = sortDescription.Direction;

            if( insertionIndex < detailSortDescriptions.Count )
            {
              var detailSortDescription = detailSortDescriptions[ insertionIndex ];

              if( ( detailSortDescription.PropertyName != detailPropertyName ) || ( detailSortDescription.Direction != detailDirection ) )
              {
                detailSortDescriptions[ insertionIndex ] = new SortDescription( detailPropertyName, detailDirection );
              }
            }
            else
            {
              detailSortDescriptions.Add( new SortDescription( detailPropertyName, detailDirection ) );
            }

            insertionIndex++;
          }

          while( insertionIndex < detailSortDescriptions.Count )
          {
            detailSortDescriptions.RemoveAt( insertionIndex );
          }
        }
        else if( detailSortDescriptions.Count > 0 )
        {
          detailSortDescriptions.Clear();
        }
      }
 /// <summary>
 /// Resets the <paramref name="sortDescriptions"/> collection to match the <paramref name="sortDescriptors"/> collection.
 /// </summary>
 /// <param name="sortDescriptions">The collection to reset</param>
 /// <param name="sortDescriptors">The collection to match</param>
 private static void ResetToSortDescriptors(SortDescriptionCollection sortDescriptions, SortDescriptorCollection sortDescriptors)
 {
     sortDescriptions.Clear();
     foreach (SortDescriptor descriptor in sortDescriptors)
     {
         SortDescription? description = SortCollectionManager.GetDescriptionFromDescriptor(descriptor);
         if (description.HasValue)
         {
             sortDescriptions.Add(description.Value);
         }
     }
 }
Ejemplo n.º 31
0
 public static void AddOnly(this SortDescriptionCollection collection, SortDescription sortDescription)
 {
     collection.Clear();
     collection.Add(sortDescription);
 }
 /// <summary>
 /// Copies the <paramref name="from"/> collection to the <paramref name="to"/> collection
 /// </summary>
 /// <param name="from">The sort descriptions to copy from</param>
 /// <param name="to">The sort descriptions to copy to</param>
 private static void CopySortDescriptions(SortDescriptionCollection from, SortDescriptionCollection to)
 {
     to.Clear();
     foreach (SortDescription sd in from)
     {
         to.Add(sd);
     }
 }
Ejemplo n.º 33
0
        private void Label_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Label             lb = (Label)sender;
            string            bindingProperty = "";
            ListSortDirection sortDirection   = ListSortDirection.Ascending;
            string            strn            = (string)(lb.Tag);

            if (strn == "0")
            {
                if (Paixiflag[0] == 0)
                {
                    Paixiflag[0]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[0]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "Id";
            }
            else if (strn == "1")
            {
                if (Paixiflag[1] == 0)
                {
                    Paixiflag[1]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[1]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "Activated";
            }
            else if (strn == "2")
            {
                if (Paixiflag[2] == 0)
                {
                    Paixiflag[2]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[2]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "Name";
            }
            //else if (strn == "3")
            //{
            //    if (Paixiflag[3] == 0)
            //    {
            //        Paixiflag[3] = 1;
            //        sortDirection = ListSortDirection.Ascending;
            //    }
            //    else
            //    {
            //        Paixiflag[3] = 0;
            //        sortDirection = ListSortDirection.Descending;
            //    }
            //    bindingProperty = "BgColor";
            //}
            else if (strn == "4")
            {
                if (Paixiflag[4] == 0)
                {
                    Paixiflag[4]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[4]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "SinglePump";
            }
            else if (strn == "5")
            {
                if (Paixiflag[5] == 0)
                {
                    Paixiflag[5]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[5]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "DoublePump";
            }
            else if (strn == "6")
            {
                if (Paixiflag[6] == 0)
                {
                    Paixiflag[6]  = 1;
                    sortDirection = ListSortDirection.Ascending;
                }
                else
                {
                    Paixiflag[6]  = 0;
                    sortDirection = ListSortDirection.Descending;
                }
                bindingProperty = "Description";
            }
            SortDescriptionCollection sdc = ListViewTreatMethod.Items.SortDescriptions;

            if (sdc.Count > 0)
            {
                SortDescription sd = sdc[0];
                sortDirection = (ListSortDirection)((((int)sd.Direction) + 1) % 2);
                //判断此列当前的排序方式:升序0,倒序1,并取反进行排序。
                sdc.Clear();
            }

            sdc.Add(new SortDescription(bindingProperty, sortDirection));
            var temp = new ObservableCollection <TreatMethodData>();

            for (int i = 0; i < ListViewTreatMethod.Items.Count; i++)
            {
                temp.Add((TreatMethodData)ListViewTreatMethod.Items[i]);
            }
            Datalist.Clear();
            Datalist = temp;
            ListViewTreatMethod.ItemsSource = Datalist;
            sdc.Clear();
        }
Ejemplo n.º 34
0
		public void SortDescriptionCollectionClearTest()
		{
			SortDescriptionCollection sdc = new SortDescriptionCollection ();
			bool eventFired = false;

			sdc.Add (new SortDescription ("A", ListSortDirection.Ascending));

			((INotifyCollectionChanged)sdc).CollectionChanged += delegate (object sender, NotifyCollectionChangedEventArgs e) {
				Assert.AreEqual (NotifyCollectionChangedAction.Reset, e.Action, "CLR_#0");
				eventFired = true;
			};

			sdc.Clear ();

			Assert.IsTrue (eventFired, "CLR_#1");
		}
Ejemplo n.º 35
0
        internal static void ToggleColumnSort(
            DataGridContext dataGridContext,
            SortDescriptionCollection sortDescriptions,
            ColumnCollection columns,
            ColumnBase column,
            bool shiftUnpressed)
        {
            if (column == null)
            {
                throw new ArgumentNullException("column");
            }

            Debug.Assert((dataGridContext != null) || (column.ParentDetailConfiguration != null));

            if ((dataGridContext == null) && (column.ParentDetailConfiguration == null))
            {
                throw new DataGridInternalException("DataGridContext or ParentDetailConfiguration can't be null.");
            }

            DataGridContext parentDataGridContext = (dataGridContext == null) ? null : dataGridContext.ParentDataGridContext;

            // Defer the RestoreState of each DataGridContext of the same level
            // to ensure all the DataGridContext will be correctly restored once
            // all of them are completely resorted
            HashSet <IDisposable> deferRestoreStateDisposable = new HashSet <IDisposable>();

            if (parentDataGridContext != null)
            {
                foreach (DataGridContext childContext in parentDataGridContext.GetChildContexts())
                {
                    deferRestoreStateDisposable.Add(childContext.DeferRestoreState());
                }
            }

            IDisposable deferResortHelper = (dataGridContext == null) ? null :
                                            SortingHelper.DeferResortHelper(dataGridContext.ItemsSourceCollection, dataGridContext.Items, sortDescriptions);

            //this will ensure that all DataGridCollectionViews mapped to this SortDescriptions collection will only refresh their sorting once!
            SortDirection newSortDirection = column.SortDirection;

            if ((shiftUnpressed) &&
                ((column.SortIndex == -1) || (sortDescriptions.Count > 1)))
            {
                sortDescriptions.Clear();
            }

            switch (newSortDirection)
            {
            case SortDirection.None:
                newSortDirection = SortDirection.Ascending;
                break;

            case SortDirection.Ascending:
                newSortDirection = SortDirection.Descending;
                break;

            case SortDirection.Descending:
                newSortDirection = SortDirection.None;
                break;
            }

            SortingHelper.ApplyColumnSort(dataGridContext, sortDescriptions, columns, column, newSortDirection);

            if (deferResortHelper != null)
            {
                //end of the DeferResort(), any DataGridCollectionView listening to the SortDescriptions instance will refresh its sorting!
                deferResortHelper.Dispose();
            }

            foreach (IDisposable disposable in deferRestoreStateDisposable)
            {
                try
                {
                    // Try/Catch to ensure all contexts are restored
                    disposable.Dispose();
                }
                catch (Exception)
                {
                }
            }

            deferRestoreStateDisposable.Clear();
        }