
Я пробовал несколько решений, но ничего не помогло. Я ожидаю, что этот прямоугольник должен перемещаться вместе с содержимым сетки данных во время прокрутки, как мы видим в проводнике Windows.
`
private void DataGrid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
isleftbuttonpressed = true;
isSelecting = true;
selectionStartPoint = e.GetPosition(FileDataGrid);
adorner = new SelectionAdorner(FileDataGrid, selectionStartPoint);
var adornerLayer = AdornerLayer.GetAdornerLayer(FileDataGrid);
adornerLayer.Add(adorner);
adorner.SetStartPoint(selectionStartPoint);
}
private void DataGrid_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
isleftbuttonpressed = true;
}
if (isSelecting && adorner != null)
{
adorner.SetEndPoint(e.GetPosition(FileDataGrid));
var selectionRect = adorner.GetSelectionRect();
SelectItemsInRectangle(selectionRect, FileDataGrid, sender, e);
}
private void SelectItemsInRectangle(Rect selectionRect, DataGrid dataGrid, object sender, MouseEventArgs e)
{
foreach (var item in dataGrid.Items)
{
var row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(item);
if (row != null)
{
var rowBounds = GetRowBoundsRelativeToDataGrid(row, dataGrid);
// Check if the row intersects with the selection rectangle
if (selectionRect.IntersectsWith(rowBounds))
{
// Select the item and add it to the collection of selected items
row.IsSelected = true;
}
else
{
row.IsSelected = false;
}
}
}
} `
Подробнее здесь: https://stackoverflow.com/questions/783 ... ing-scroll
Мобильная версия