Горизонтальная прокрутка WPF Datagrid только с данными заголовка

У меня есть WPFDatagridНа начальном этапе я назначу заголовок 100 столбцов Datagrid, но я не могу прокрутить его по горизонтали, чтобы просмотреть все заголовки столбцов.

DataGrid не имеет рядов, ItemSource нулевой. Как добиться горизонтальной прокрутки, когда у меня есть только заголовки столбцов (без строк).

Я связал ItemSource в DataTable, который имеет только заголовок столбца и не содержит строк.

Как я могу прокрутить в этом сценарии.

4 ответа

Решение

Как сказал ArsenMkrt, это невозможно. Но я думаю, что вы можете добавить строку к вашему DataTable но после этого вы можете установить его соответствующий DatagridRowВидимость быть скрытым.

Когда ваш DataTable заполняется фактическими данными, просто очистите DataTable.Rows.

Вот обходной путь для этой проблемы, который работал для меня: просто поместите DataGrid в ScrollViewer и сделать DataTrigger установить HorizontalScrollBarVisibility из ScrollViewer в Visible если DataGrid не имеет предметов

<ScrollViewer VerticalScrollBarVisibility="Disabled">
    <ScrollViewer.Style>
        <Style TargetType="ScrollViewer">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=dataGrid, Path=HasItems}" Value="False">
                    <Setter Property="HorizontalScrollBarVisibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ScrollViewer.Style>
    <DataGrid Name="dataGrid"/>
</ScrollViewer>

К сожалению, это невозможно при использовании стиля по умолчанию DataGrid, вам нужно переопределить шаблон и создать свою собственную сетку, выведенную из основной. Здесь вы можете найти более подробную информацию.

Вы не Вы должны иметь ряд.

Измените ваш ItemsSource, чтобы не по умолчанию на ноль.

Если вы разрешаете добавлять строку, вы можете по умолчанию использовать пустой список.

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

List<object> olist = new List<object>();
olist.add(new object());
Другие вопросы по тегам