У меня очень простой WPF DataGrid с 1 замороженным столбцом. Когда я прокручиваю по горизонтали (вправо или влево), щелкая пустую часть полосы прокрутки, я прокручиваю слишком далеко - возможно, по ширине замороженного столбца. (Другие способы прокрутки, перетаскивание большого пальца, нажатие кнопок со стрелками вправо или влево, работают нормально). У меня есть несколько строк и 10 столбцов, от Col00 до Col09. Col00 заморожен. Щелчок в области, показанной на изображении, вызывает прокрутку слишком далеко. Col04. Нажмите в пустой области горизонта. полоса прокрутки перемещается слишком далеко
XAML и C#, показанные ниже ...
<Window x:Class="TestDatagridScroll.MainWindow"
xmlns="<the usual URL>"
xmlns:x="<the usual URL>"
Title="TestDataGridScroll" Height="198" Width="343">
<Grid>
<DataGrid Name="dg" AutoGenerateColumns="True" FrozenColumnCount="1" >
</DataGrid>
</Grid>
</Window>
public MainWindow()
{
InitializeComponent();
List<RowOfCells> rowOfCellsList = new List<RowOfCells>();
RowOfCells rowOfCells = null;
for (int i = 0; i < 20; i++) // generate some data rows
{
rowOfCells = new RowOfCells();
rowOfCells.Col00 = $"TextCol00-{i:D2}";
rowOfCells.Col01 = $"TextCol01-{i:D2}";
rowOfCells.Col02 = $"TextCol02-{i:D2}";
rowOfCells.Col03 = $"TextCol03-{i:D2}";
rowOfCells.Col04 = $"TextCol04-{i:D2}";
rowOfCells.Col05 = $"TextCol05-{i:D2}";
rowOfCells.Col06 = $"TextCol06-{i:D2}";
rowOfCells.Col07 = $"TextCol07-{i:D2}";
rowOfCells.Col08 = $"TextCol08-{i:D2}";
rowOfCells.Col09 = $"TextCol09-{i:D2}";
rowOfCellsList.Add(rowOfCells);
}
dg.ItemsSource = rowOfCellsList;
}
RowOfCells - это мой класс из 10 опубликованных c свойств, от Col00 до Col09.
Я встроил VS2015 (. Net 4.6.1) и VS2017 (. Net 4.7.2 и. Net 4.8) и работал в Win10 ver.1909.
Я пробовал много разных способов, но поведение всегда одинаково. На поведение не влияет наличие вертикальной полосы прокрутки.
Если я удаляю замороженный столбец, тогда все способы прокрутки в порядке, но мне нужен этот 1 замороженный столбец.
Есть ли исправление за это? Или обходной путь? Спасибо за ваше время.