public static IObservable <EventPattern <RequestBringIntoViewEventArgs> > RequestBringIntoViewObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <RequestBringIntoViewEventHandler, RequestBringIntoViewEventArgs>(h => This.RequestBringIntoView += h, h => This.RequestBringIntoView -= h)); }
public static IObservable <EventPattern <TouchEventArgs> > TouchLeaveObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <EventHandler <TouchEventArgs>, TouchEventArgs>(h => This.TouchLeave += h, h => This.TouchLeave -= h)); }
public static IObservable <EventPattern <QueryContinueDragEventArgs> > QueryContinueDragObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <QueryContinueDragEventHandler, QueryContinueDragEventArgs>(h => This.QueryContinueDrag += h, h => This.QueryContinueDrag -= h)); }
public static IObservable <EventPattern <DragEventArgs> > PreviewDragLeaveObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <DragEventHandler, DragEventArgs>(h => This.PreviewDragLeave += h, h => This.PreviewDragLeave -= h)); }
public static IObservable <EventPattern <KeyEventArgs> > KeyUpObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <KeyEventHandler, KeyEventArgs>(h => This.KeyUp += h, h => This.KeyUp -= h)); }
public static IObservable <EventPattern <KeyboardFocusChangedEventArgs> > PreviewLostKeyboardFocusObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <KeyboardFocusChangedEventHandler, KeyboardFocusChangedEventArgs>(h => This.PreviewLostKeyboardFocus += h, h => This.PreviewLostKeyboardFocus -= h)); }
public static IObservable <EventPattern <MouseButtonEventArgs> > PreviewMouseRightButtonDownObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <MouseButtonEventHandler, MouseButtonEventArgs>(h => This.PreviewMouseRightButtonDown += h, h => This.PreviewMouseRightButtonDown -= h)); }
public static IObservable <EventPattern <ManipulationBoundaryFeedbackEventArgs> > ManipulationBoundaryFeedbackObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <EventHandler <ManipulationBoundaryFeedbackEventArgs>, ManipulationBoundaryFeedbackEventArgs>(h => This.ManipulationBoundaryFeedback += h, h => This.ManipulationBoundaryFeedback -= h)); }
/// <summary> /// Helper method to find display index, header and header start position based on given mouse position /// </summary> private void FindDisplayIndexAndHeaderPosition(Point startPos, bool findNearestColumn, out int displayIndex, out Point headerPos, out DataGridColumnHeader header) { Debug.Assert(ParentDataGrid != null, "ParentDataGrid is null"); Point originPoint = new Point(0, 0); headerPos = originPoint; displayIndex = -1; header = null; if (startPos.X < 0.0) { if (findNearestColumn) { displayIndex = 0; } return; } double headerStartX = 0.0; double headerEndX = 0.0; int i = 0; DataGrid dataGrid = ParentDataGrid; double averageColumnWidth = dataGrid.InternalColumns.AverageColumnWidth; bool firstVisibleNonFrozenColumnHandled = false; for (i = 0; i < dataGrid.Columns.Count; i++) { displayIndex++; DataGridColumnHeader currentHeader = dataGrid.ColumnHeaderFromDisplayIndex(i); if (currentHeader == null) { DataGridColumn column = dataGrid.ColumnFromDisplayIndex(i); if (!column.IsVisible) { continue; } else { headerStartX = headerEndX; if (i >= dataGrid.FrozenColumnCount && !firstVisibleNonFrozenColumnHandled) { headerStartX -= dataGrid.HorizontalScrollOffset; firstVisibleNonFrozenColumnHandled = true; } headerEndX = headerStartX + GetColumnEstimatedWidth(column, averageColumnWidth); } } else { GeneralTransform transform = currentHeader.TransformToAncestor(this); headerStartX = transform.Transform(originPoint).X; headerEndX = headerStartX + currentHeader.RenderSize.Width; } if (DoubleUtil.LessThanOrClose(startPos.X, headerStartX)) { break; } if (DoubleUtil.GreaterThanOrClose(startPos.X, headerStartX) && DoubleUtil.LessThanOrClose(startPos.X, headerEndX)) { if (findNearestColumn) { double headerMidX = (headerStartX + headerEndX) * 0.5; if (DoubleUtil.GreaterThanOrClose(startPos.X, headerMidX)) { headerStartX = headerEndX; displayIndex++; } if (_draggingSrcColumnHeader != null && _draggingSrcColumnHeader.Column != null && _draggingSrcColumnHeader.Column.DisplayIndex < displayIndex) { displayIndex--; } } else { header = currentHeader; } break; } } if (i == dataGrid.Columns.Count) { displayIndex = dataGrid.Columns.Count - 1; headerStartX = headerEndX; } headerPos.X = headerStartX; return; }
/// <summary> /// Method which recomputes the widths of columns on resize of a header /// </summary> private static void RecomputeColumnWidthsOnColumnResize(DataGridColumnHeader header, double horizontalChange) { Debug.Assert(header != null, "Header should not be null"); DataGridColumn resizingColumn = header.Column; if (resizingColumn == null) { return; } DataGrid dataGrid = resizingColumn.DataGridOwner; if (dataGrid == null) { return; } dataGrid.InternalColumns.RecomputeColumnWidthsOnColumnResize(resizingColumn, horizontalChange, false); }
/// <summary> /// Method which prepares the state for the start of column header drag /// </summary> private void PrepareColumnHeaderDrag(DataGridColumnHeader header, Point pos, Point relativePos) { _prepareColumnHeaderDragging = true; _isColumnHeaderDragging = false; _draggingSrcColumnHeader = header; _columnHeaderDragStartPosition = pos; _columnHeaderDragStartRelativePosition = relativePos; }
private DataGridColumn ColumnFromContainer(DataGridColumnHeader container) { Debug.Assert(HeaderCollection != null, "This is a helper method for preparing and clearing a container; if it's called we must have a valid ItemSource"); int index = ItemContainerGenerator.IndexFromContainer(container); return HeaderCollection.ColumnFromIndex(index); }
/// <summary> /// Method which completes the column header drag. Includes raising of events and changing column display index if needed. /// </summary> private void FinishColumnHeaderDrag(bool isCancel) { Debug.Assert(ParentDataGrid != null, "ParentDataGrid is null"); _prepareColumnHeaderDragging = false; _isColumnHeaderDragging = false; _draggingSrcColumnHeader.SuppressClickEvent = false; if (_columnHeaderDragIndicator != null) { _columnHeaderDragIndicator.Visibility = Visibility.Collapsed; DataGridColumnFloatingHeader floatingHeader = _columnHeaderDragIndicator as DataGridColumnFloatingHeader; if (floatingHeader != null) { floatingHeader.ClearHeader(); } RemoveVisualChild(_columnHeaderDragIndicator); } if (_columnHeaderDropLocationIndicator != null) { _columnHeaderDropLocationIndicator.Visibility = Visibility.Collapsed; DataGridColumnDropSeparator separator = _columnHeaderDropLocationIndicator as DataGridColumnDropSeparator; if (separator != null) { separator.ReferenceHeader = null; } RemoveVisualChild(_columnHeaderDropLocationIndicator); } DragCompletedEventArgs dragCompletedEventArgs = new DragCompletedEventArgs( _columnHeaderDragCurrentPosition.X - _columnHeaderDragStartPosition.X, _columnHeaderDragCurrentPosition.Y - _columnHeaderDragStartPosition.Y, isCancel); ParentDataGrid.OnColumnHeaderDragCompleted(dragCompletedEventArgs); _draggingSrcColumnHeader.InvalidateArrange(); if (!isCancel) { int newDisplayIndex = -1; bool dragEndPositionValid = IsMousePositionValidForColumnDrag( 2.0, out newDisplayIndex); DataGridColumn column = _draggingSrcColumnHeader.Column; if (column != null && dragEndPositionValid && newDisplayIndex != column.DisplayIndex) { column.DisplayIndex = newDisplayIndex; DataGridColumnEventArgs columnEventArgs = new DataGridColumnEventArgs(_draggingSrcColumnHeader.Column); ParentDataGrid.OnColumnReordered(columnEventArgs); } } _draggingSrcColumnHeader = null; _columnHeaderDragIndicator = null; _columnHeaderDropLocationIndicator = null; }
public static IObservable <EventPattern <RoutedEventArgs> > LostFocusObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <RoutedEventHandler, RoutedEventArgs>(h => This.LostFocus += h, h => This.LostFocus -= h)); }
public static IObservable <EventPattern <MouseWheelEventArgs> > PreviewMouseWheelObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <MouseWheelEventHandler, MouseWheelEventArgs>(h => This.PreviewMouseWheel += h, h => This.PreviewMouseWheel -= h)); }
public static IObservable <EventPattern <DependencyPropertyChangedEventArgs> > FocusableChangedObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <DependencyPropertyChangedEventHandler, DependencyPropertyChangedEventArgs>(h => This.FocusableChanged += h, h => This.FocusableChanged -= h)); }
public static IObservable <EventPattern <MouseEventArgs> > MouseEnterObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <MouseEventHandler, MouseEventArgs>(h => This.MouseEnter += h, h => This.MouseEnter -= h)); }
/// <summary> /// Helper method which clears the header drag state /// </summary> private void ClearColumnHeaderDragInfo() { _isColumnHeaderDragging = false; _prepareColumnHeaderDragging = false; _draggingSrcColumnHeader = null; if (_columnHeaderDragIndicator != null) { RemoveVisualChild(_columnHeaderDragIndicator); _columnHeaderDragIndicator = null; } if (_columnHeaderDropLocationIndicator != null) { RemoveVisualChild(_columnHeaderDropLocationIndicator); _columnHeaderDropLocationIndicator = null; } }
public static IObservable <EventPattern <MouseEventArgs> > GotMouseCaptureObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <MouseEventHandler, MouseEventArgs>(h => This.GotMouseCapture += h, h => This.GotMouseCapture -= h)); }
public static IObservable <EventPattern <DataTransferEventArgs> > SourceUpdatedObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <EventHandler <DataTransferEventArgs>, DataTransferEventArgs>(h => This.SourceUpdated += h, h => This.SourceUpdated -= h)); }
public static IObservable <EventPattern <QueryCursorEventArgs> > QueryCursorObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <QueryCursorEventHandler, QueryCursorEventArgs>(h => This.QueryCursor += h, h => This.QueryCursor -= h)); }
public static IObservable <EventPattern <TextCompositionEventArgs> > TextInputObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <TextCompositionEventHandler, TextCompositionEventArgs>(h => This.TextInput += h, h => This.TextInput -= h)); }
public static IObservable <EventPattern <MouseButtonEventArgs> > MouseDoubleClickObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <MouseButtonEventHandler, MouseButtonEventArgs>(h => This.MouseDoubleClick += h, h => This.MouseDoubleClick -= h)); }
public static IObservable <EventPattern <GiveFeedbackEventArgs> > GiveFeedbackObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <GiveFeedbackEventHandler, GiveFeedbackEventArgs>(h => This.GiveFeedback += h, h => This.GiveFeedback -= h)); }
public static IObservable <EventPattern <StylusEventArgs> > StylusOutOfRangeObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <StylusEventHandler, StylusEventArgs>(h => This.StylusOutOfRange += h, h => This.StylusOutOfRange -= h)); }
public static IObservable <EventPattern <DragEventArgs> > DropObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <DragEventHandler, DragEventArgs>(h => This.Drop += h, h => This.Drop -= h)); }
public static IObservable <EventPattern <StylusSystemGestureEventArgs> > PreviewStylusSystemGestureObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <StylusSystemGestureEventHandler, StylusSystemGestureEventArgs>(h => This.PreviewStylusSystemGesture += h, h => This.PreviewStylusSystemGesture -= h)); }
public static IObservable <EventPattern <TouchEventArgs> > PreviewTouchUpObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <EventHandler <TouchEventArgs>, TouchEventArgs>(h => This.PreviewTouchUp += h, h => This.PreviewTouchUp -= h)); }
public static IObservable <EventPattern <StylusEventArgs> > LostStylusCaptureObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <StylusEventHandler, StylusEventArgs>(h => This.LostStylusCapture += h, h => This.LostStylusCapture -= h)); }
public static IObservable <EventPattern <SizeChangedEventArgs> > SizeChangedObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <SizeChangedEventHandler, SizeChangedEventArgs>(h => This.SizeChanged += h, h => This.SizeChanged -= h)); }
public static IObservable <EventPattern <StylusButtonEventArgs> > StylusButtonDownObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <StylusButtonEventHandler, StylusButtonEventArgs>(h => This.StylusButtonDown += h, h => This.StylusButtonDown -= h)); }
public static IObservable <EventPattern <EventArgs> > InitializedObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <EventHandler, EventArgs>(h => This.Initialized += h, h => This.Initialized -= h)); }
public static IObservable <EventPattern <StylusButtonEventArgs> > PreviewStylusButtonUpObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <StylusButtonEventHandler, StylusButtonEventArgs>(h => This.PreviewStylusButtonUp += h, h => This.PreviewStylusButtonUp -= h)); }
public static IObservable <EventPattern <ManipulationInertiaStartingEventArgs> > ManipulationInertiaStartingObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <EventHandler <ManipulationInertiaStartingEventArgs>, ManipulationInertiaStartingEventArgs>(h => This.ManipulationInertiaStarting += h, h => This.ManipulationInertiaStarting -= h)); }
public static IObservable <EventPattern <KeyEventArgs> > PreviewKeyDownObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <KeyEventHandler, KeyEventArgs>(h => This.PreviewKeyDown += h, h => This.PreviewKeyDown -= h)); }
public static IObservable <EventPattern <ManipulationCompletedEventArgs> > ManipulationCompletedObserver(this DataGridColumnHeader This) { return(Observable.FromEventPattern <EventHandler <ManipulationCompletedEventArgs>, ManipulationCompletedEventArgs>(h => This.ManipulationCompleted += h, h => This.ManipulationCompleted -= h)); }
/// <summary> /// Gets called on mouse left button down of child header, and ensures preparation for column header drag /// </summary> internal void OnHeaderMouseLeftButtonDown(MouseButtonEventArgs e) { if (ParentDataGrid == null) { return; } if (_columnHeaderDragIndicator != null) { RemoveVisualChild(_columnHeaderDragIndicator); _columnHeaderDragIndicator = null; } if (_columnHeaderDropLocationIndicator != null) { RemoveVisualChild(_columnHeaderDropLocationIndicator); _columnHeaderDropLocationIndicator = null; } Point mousePosition = e.GetPosition(this); DataGridColumnHeader header = FindColumnHeaderByPosition(mousePosition); if (header != null) { DataGridColumn column = header.Column; if (ParentDataGrid.CanUserReorderColumns && column.CanUserReorder) { PrepareColumnHeaderDrag(header, e.GetPosition(this), e.GetPosition(header)); } } else { _isColumnHeaderDragging = false; _prepareColumnHeaderDragging = false; _draggingSrcColumnHeader = null; InvalidateArrange(); } }