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(); }
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)); } }
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)); } } ; } }
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)); }
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)); } } }
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); } }
/// <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)); } } }
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); } }
public static void SetSortDescription(SortDescriptionCollection to, SortDescriptionCollection from) { to.Clear(); foreach (var sd in from) { to.Add(sd); } }
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); } } }
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; } }
// 对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)); }
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"); }
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; }
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)); } } }
/// <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); } }
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)); } } }
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)); } } }
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; } } } }
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(); }
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; } }
/// <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); } } }
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); } }
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(); }
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"); }
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(); }