} // ListViewUnloaded // ---------------------------------------------------------------------- private void ThumbPreviewMouseMove(object sender, MouseEventArgs e) { Thumb thumb = sender as Thumb; if (thumb == null) { return; } GridViewColumn gridViewColumn = FindParentColumn(thumb); if (gridViewColumn == null) { return; } // suppress column resizing for proportional, fixed and range fill columns if (ProportionalColumn.IsProportionalColumn(gridViewColumn) || FixedColumn.IsFixedColumn(gridViewColumn) || IsFillColumn(gridViewColumn)) { thumb.Cursor = null; return; } // check range column bounds if (thumb.IsMouseCaptured && RangeColumn.IsRangeColumn(gridViewColumn)) { double?minWidth = RangeColumn.GetRangeMinWidth(gridViewColumn); double?maxWidth = RangeColumn.GetRangeMaxWidth(gridViewColumn); if ((minWidth.HasValue && maxWidth.HasValue) && (minWidth > maxWidth)) { return; // invalid case } if (resizeCursor == null) { resizeCursor = thumb.Cursor; // save the resize cursor } if (minWidth.HasValue && gridViewColumn.Width <= minWidth.Value) { thumb.Cursor = Cursors.No; } else if (maxWidth.HasValue && gridViewColumn.Width >= maxWidth.Value) { thumb.Cursor = Cursors.No; } else { thumb.Cursor = resizeCursor; // between valid min/max } } } // ThumbPreviewMouseMove
} // FindColumnHeader // ---------------------------------------------------------------------- private void InitColumns() { GridView view = listView.View as GridView; if (view == null) { return; } foreach (GridViewColumn gridViewColumn in view.Columns) { if (!RangeColumn.IsRangeColumn(gridViewColumn)) { continue; } double?minWidth = RangeColumn.GetRangeMinWidth(gridViewColumn); double?maxWidth = RangeColumn.GetRangeMaxWidth(gridViewColumn); if (!minWidth.HasValue && !maxWidth.HasValue) { continue; } GridViewColumnHeader columnHeader = FindColumnHeader(listView, gridViewColumn); if (columnHeader == null) { continue; } double actualWidth = columnHeader.ActualWidth; if (minWidth.HasValue) { columnHeader.MinWidth = minWidth.Value; if (!double.IsInfinity(actualWidth) && actualWidth < columnHeader.MinWidth) { gridViewColumn.Width = columnHeader.MinWidth; } } if (maxWidth.HasValue) { columnHeader.MaxWidth = maxWidth.Value; if (!double.IsInfinity(actualWidth) && actualWidth > columnHeader.MaxWidth) { gridViewColumn.Width = columnHeader.MaxWidth; } } } } // InitColumns