【发布时间】:2012-11-30 18:03:11
【问题描述】:
我有一个WPFDatagrid,在初始阶段我将分配 100 个列标题给Datagrid,但我无法水平滚动它来查看所有列标题。
DataGrid 没有任何行,ItemSource 为空。当我只有列标题(没有行)时,如何实现水平滚动。
我将ItemSource 绑定到一个只有列标题而没有行的DataTable。
如何在这种情况下滚动。
【问题讨论】:
我有一个WPFDatagrid,在初始阶段我将分配 100 个列标题给Datagrid,但我无法水平滚动它来查看所有列标题。
DataGrid 没有任何行,ItemSource 为空。当我只有列标题(没有行)时,如何实现水平滚动。
我将ItemSource 绑定到一个只有列标题而没有行的DataTable。
如何在这种情况下滚动。
【问题讨论】:
以下是对我有用的此问题的解决方法:只需将DataGrid 放入ScrollViewer 并创建DataTrigger 以将ScrollViewer 的HorizontalScrollBarVisibility 设置为Visible 如果@987654327 @ 没有项目。
<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 默认样式是不可能的,您必须覆盖模板并创建从主网格派生的自定义网格。 here你可以找到更多细节。
【讨论】:
正如 ArsenMkrt 所说,这是不可能的。但是,我认为您可以在DataTable 中添加一行,但之后,您可以将其对应的DatagridRow 的可见性设置为隐藏。
当您的DataTable 被实际数据填充时,只需清除 DataTable.Rows。
【讨论】:
你没有。你必须有一排。
将您的 ItemsSource 更改为不默认为 null。
如果您允许添加行,则可以默认为空列表。
如果不允许添加行,则需要默认为一个项目的列表。
List<object> olist = new List<object>();
olist.add(new object());
【讨论】: