我有WPF
Datagrid
,在初始阶段我会为Datagrid
分配100个列标题,但我无法水平滚动它以查看所有列标题。
DataGrid
没有任何行,ItemSource
为空。当我只有列标题(没有行)时,如何实现水平滚动。
我将ItemSource
绑定到只有列标题但没有行的DataTable。
如何滚动此方案。
答案 0 :(得分:7)
此问题的解决方法对我有用:只需将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>
答案 1 :(得分:1)
不幸的是,使用DataGrid默认样式是不可能的,您必须覆盖模板并创建派生到主要模板的自定义网格。 here您可以找到更多详细信息。
答案 2 :(得分:0)
正如ArsenMkrt所说,这是不可能的。但是,我认为您可以在DataTable
添加一行,但在此之后,您可以将其对应的DatagridRow
的可见性设置为隐藏。
当您的DataTable
填充实际数据时,只需清除DataTable.Rows。
答案 3 :(得分:-1)
你没有。你必须有一排。
将ItemsSource更改为默认为null。
如果您允许添加行,则可以默认为空列表。
如果您不允许添加行,则需要默认为一个项目的列表。
List<object> olist = new List<object>();
olist.add(new object());