protected override void OnAttached() { base.OnAttached(); AssociatedObject.DataContext = new ViewModel(); pivotGrid = AssociatedObject.Children[1] is Grid ? (AssociatedObject.Children[1] as Grid).Children[0] as PivotGridControl : null; scrollViewer = AssociatedObject.Children[1] is Grid ? (AssociatedObject.Children[1] as Grid).Children[1] as ScrollViewer : null; if (pivotGrid != null) { pivotGrid.AutoSizeOption = GridAutoSizeOption.None; var m = new MonthComparer("MMM"); pivotGrid.PivotColumns.Add(new PivotItem { FieldHeader = "Month", Comparer = m, FieldMappingName = "Date", TotalHeader = "Total", Format = "MMM" }); pivotGrid.PivotEngine.EnableOnDemandCalculations = pivotGrid.PivotEngine.UseIndexedEngine = true; pivotGrid.PivotEngine.GetValue = ItemObjectLookup; ObservableCollection <ItemObject> itemsSourceObject = (AssociatedObject.DataContext as ViewModel).ItemObjectCollection; pivotGrid.PivotEngine.PivotSchemaChanged += PivotEngine_PivotSchemaChanged; pivotGrid.ItemSource = itemsSourceObject; } }
private List <TabularItemNode> Sort(CacheFieldNode cacheField, SharedItemsCollection cacheItems) { // Sort the fields according to their types. IComparer <string> comparer = null; if (this.TabularDataNode.CustomListSort && cacheField.IsDateGrouping) { if (cacheField.FieldGroup.GroupBy == PivotFieldDateGrouping.Months) { comparer = new MonthComparer(); } else if (cacheField.FieldGroup.GroupBy == PivotFieldDateGrouping.Days) { comparer = new DayComparer(); } } else { comparer = new NaturalComparer(); } // Sort the slicer cache items. if (this.TabularDataNode.SortOrder == SortOrder.Descending) { return(this.TabularDataNode.Items.OrderByDescending(t => cacheItems[t.AtomIndex].Value, comparer).ToList()); } return(this.TabularDataNode.Items.OrderBy(t => cacheItems[t.AtomIndex].Value, comparer).ToList()); }