Определение размера DataGridTemplateColumn - PullRequest
1 голос
/ 23 сентября 2011

У меня есть приложение WPF с DataGrid, содержащим 10 DataGridTemplateColumns. Когда я связываю коллекцию объектов с сеткой данных, все они хорошо отображаются в сетке. Единственная проблема состоит в том, что если у меня больше строк, чем уместится на экране без полос прокрутки, столбцы автоматически изменяют размер, чтобы соответствовать значениям, которые находятся на экране. Если, например, я прокручиваю вниз и попадаю в строку, где значение столбца 1 не подходит, тогда размер столбца 1 будет соответствовать ему. Это действительно раздражает. Нет ли способа сделать так, чтобы он автоматически менялся, чтобы соответствовать всем элементам в коллекции, независимо от того, находятся ли они изначально на экране? Я попытался установить для свойства width каждого столбца значение Auto, но ничего не получилось. Заранее спасибо за любую помощь

1 Ответ

1 голос
/ 23 сентября 2011

Проблема вызвана тем, что строки в сетке данных виртуализируются. Поэтому элементы, не отображаемые на экране, не нужно рисовать (или рассчитывать их размеры), пока они не должны отображаться.

Вы можете отключить виртуализацию следующим образом:

<DataGrid VirtualizingStackPanel.IsVirtualizing="False" HorizontalScrollBarVisibility="Hidden">

Обратите внимание, однако, что это может привести к тому, что ваша таблица данных будет загружаться медленнее, если у вас много элементов из-за того, что все элементы будут «нарисованы», даже если они не отображаются на экране.

...