void OnOwnerMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (doNotProcessMouse) { return; } HitTestResult result = VisualTreeHelper.HitTest(this.owner, e.GetPosition(this.owner)); UIElement element = result == null ? null : result.VisualHit as UIElement; DependencyObject dom = element == null ? null : LayoutHelper.FindLayoutOrVisualParentObject(element, d => GetOverrideManipulation(d)); if (dom != null) { return; } if (!this.owner.CaptureMouse()) { return; } mouseMoveHandled = false; e.Handled = true; this.lastPosition = e.GetPosition(this.owner); this.manipulationInProgress = true; }
private void OnGridControlClicked(object sender, MouseButtonEventArgs e) { var columnHeader = LayoutHelper.FindLayoutOrVisualParentObject((DependencyObject)e.OriginalSource, typeof(GridColumnHeader)) as GridColumnHeader; if (columnHeader == null || Model == null || Model.WorkInProgress) { return; } var clickedColumn = (GridColumn)columnHeader.DataContext; if (clickedColumn.Tag == null) { return; } ClearSortExcept(columnHeader); var sortUpControl = (ColumnHeaderSortIndicatorControl)_sortUpProperty.GetValue(columnHeader, null); var sortDownControl = (ColumnHeaderSortIndicatorControl)_sortDownProperty.GetValue(columnHeader, null); ColumnSortOrder sort; if (sortUpControl.Visibility != Visibility.Visible) { sortUpControl.Visibility = Visibility.Visible; sortDownControl.Visibility = Visibility.Hidden; sort = ColumnSortOrder.Ascending; } else { sortUpControl.Visibility = Visibility.Hidden; sortDownControl.Visibility = Visibility.Visible; sort = ColumnSortOrder.Descending; } SortData(clickedColumn, sort); }
protected override FrameworkElement FindParent(object sender, DependencyObject originalSource) { return(LayoutHelper.FindLayoutOrVisualParentObject(originalSource, x => CheckItemType(sender)(x), true, (DependencyObject)sender) as FrameworkElement); }
bool IsScrollContentPresenterAndHasRowPresenterGridAsParent(FrameworkElement e) { return(IsScrollContentPresenter(e) && LayoutHelper.FindLayoutOrVisualParentObject(e, IsRowPresenterGrid) != null); }