4

我有一个WPF Datagrid,在初始阶段我将分配 100 个列标题Datagrid,但我无法水平滚动它来查看所有列标题。

DataGrid没有任何行,ItemSource为空。当我只有列标题(没有行)时,如何实现水平滚动。

我绑定ItemSource到一个只有列标题而没有行的 DataTable。

在这种情况下如何滚动。

4

4 回答 4

8

这是解决此问题的一种解决方法,对我有用:只需将DataGrida 放入 aScrollViewer并制作 aDataTrigger以将 the 设置为HorizontalScrollBarVisibilityif没有项目。ScrollViewerVisibleDataGrid

<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>
于 2014-01-28T08:58:07.627 回答
2

不幸的是,DataGrid 默认样式是不可能的,您必须覆盖模板并创建派生到主网格的自定义网格。在这里您可以找到更多详细信息。

于 2012-11-30T18:17:43.170 回答
0

正如 ArsenMkrt 所说,这是不可能的。但是,我认为您可以添加一行,DataTable但之后,您可以将其对应DatagridRow的可见性设置为隐藏。

当您DataTable使用实际数据填充时,只需清除 DataTable.Rows。

于 2012-12-01T08:25:37.170 回答
-1

你没有。你必须有一排。

将您的 ItemsSource 更改为不默认为 null。

如果允许添加行,则可以默认为空列表。

如果您不允许添加行,则需要默认为一个项目的列表。

List<object> olist = new List<object>();
olist.add(new object());
于 2012-11-30T18:24:26.963 回答