Можно ли отобразить горизонтальную полосу прокрутки в DataGrid, у которой нет строк? - PullRequest
1 голос
/ 12 мая 2011

Я бы хотел, чтобы пользователи могли прокручивать DataGrid по горизонтали, даже если в DataGrid нет строк.Просто чтобы позволить им узнать все столбцы, которые существуют в DataGrid.Можно ли это сделать?

Ответы [ 4 ]

0 голосов
/ 23 февраля 2012

Я не уверен, если это без переопределения шаблона.Мне удалось заставить полосу прокрутки отображаться (путем прямого доступа к ней), но фактически не прокручиваться.Я закончил с предложением в аналогичном посте добавить фиктивную строку и установить высоту строки равной 0, когда строк нет.Это некрасиво, но работает.

if (dtEnrollments.Rows.Count == 0)
{
    dtEnrollments.Rows.Add(dtEnrollments.NewRow());
    dgClassRoster.RowHeight = 0;
}
else
    dgRoster.RowHeight = defaultRowHeight;

dgRoster.ItemsSource = dtEnrollments.DefaultView;
0 голосов
/ 12 мая 2011

Попробуйте обернуть DataGrid в ScrollViewer, с HorizontalScrollBarVisibility принудительно Visible и добавить следующее свойство к DataGrid:

<DataGrid.Template>
    <ControlTemplate>                        
         <ItemsPresenter />
    </ControlTemplate>

</DataGrid.Template>

.хитрость

0 голосов
/ 12 мая 2011

Вы можете попробовать связать MaxWidth DataGrid с ActualWidth родительского элемента (Control/Window/Grid / etc.).

0 голосов
/ 12 мая 2011

Вы можете попытаться применить горизонтальную полосу прокрутки с помощью ScrollViewer.HorizontalScrollBarVisibility="Visible" или, если это не удастся, вы можете отключить прокрутку внутри DataGrid и обернуть ее в ScrollViewer.

...