protected virtual void OnColumnActualWidthChanged(ColumnActualWidthChangedEventArgs e) { // We pass the delta between the old and new value to tell the Panel to reduce the horizontal offset when a column is auto-resized to a smaller value if (e != null) { this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.ColumnActualWidthChanged, e.OldValue - e.NewValue)); } else { this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.ColumnActualWidthChanged)); } }
protected override bool OnReceivedWeakEvent(Type managerType, object sender, EventArgs e) { bool handled = false; bool detachFromDataGridContext = false; if (managerType == typeof(VisibleColumnsUpdatedEventManager)) { this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.ColumnReordering)); handled = true; } else if (managerType == typeof(CollectionChangedEventManager)) { if (sender == this.DataGridContext.Items.SortDescriptions) { this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.SortingChanged)); } if (sender == this.DataGridContext.Items.GroupDescriptions) { this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.GroupingChanged)); } handled = true; } else if (managerType == typeof(ColumnActualWidthEventManager)) { ColumnActualWidthChangedEventArgs args = e as ColumnActualWidthChangedEventArgs; // We pass the delta between the old and new value to tell the Panel to reduce the // horizontal offset when a column is auto-resized to a smaller value if (args != null) { double delta = args.OldValue - args.NewValue; this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.ColumnActualWidthChanged, delta)); } else { this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.ColumnActualWidthChanged)); } handled = true; } else if (managerType == typeof(ViewChangedEventManager)) { detachFromDataGridContext = true; this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.Unspecified)); handled = true; } else if (managerType == typeof(ThemeChangedEventManager)) { detachFromDataGridContext = true; this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.Unspecified)); handled = true; } else if (managerType == typeof(DataGridControlTemplateChangedEventManager)) { this.UpdateScrollViewer(); this.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.Unspecified)); handled = true; } else if (managerType == typeof(ItemsSourceChangeCompletedEventManager)) { detachFromDataGridContext = true; handled = true; } if (detachFromDataGridContext == true) { if (this.DataGridContext != null) { // Detach the ColumnVirtualizationManager from the DataGridContext and detach from the DataGridContext ColumnVirtualizationManager.SetColumnVirtualizationManager(this.DataGridContext, null); this.Uninitialize(); } } return(handled); }