C# 用XAML包装数据网格
我有一个由DataTable填充的DataGrid。问题是DataTable有12列,但只有9列将显示在DataGrid中,因为这是页面上的全部内容 有人知道如何包装DataGrid,使其余列显示在页面下方吗?或者我能解决这个问题的其他想法C# 用XAML包装数据网格,c#,xaml,datatable,wpfdatagrid,C#,Xaml,Datatable,Wpfdatagrid,我有一个由DataTable填充的DataGrid。问题是DataTable有12列,但只有9列将显示在DataGrid中,因为这是页面上的全部内容 有人知道如何包装DataGrid,使其余列显示在页面下方吗?或者我能解决这个问题的其他想法 谢谢我认为没有办法包装数据网格对象,相反,您可以将数据网格放在ScrollViewer中并启用HorizontalScroll ScrollViewer类不确定如何轻松包装它。我想您必须通过监视控件的宽度来管理显示哪些列(更不用说有多个数据表了)。讨厌!我建
谢谢我认为没有办法包装数据网格对象,相反,您可以将数据网格放在ScrollViewer中并启用HorizontalScroll
ScrollViewer类不确定如何轻松包装它。我想您必须通过监视控件的宽度来管理显示哪些列(更不用说有多个数据表了)。讨厌!我建议将您的
DataGrid
插入ScrollViewer
中,这也将与许多其他用户界面保持一致,使您的应用程序更易于理解
只需确保将HorizontalScrollBarVisibility
属性设置为Auto
或Visible
请参见下面的XAML:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<DataGrid AutoGenerateColumns="False" Name="dataGrid1">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" />
<DataGridTextColumn Header="Column 2" />
<DataGridTextColumn Header="Column 3" />
<DataGridTextColumn Header="Column 4" />
<DataGridTextColumn Header="Column 5" />
<DataGridTextColumn Header="Column 6" />
<DataGridTextColumn Header="Column 7" />
<DataGridTextColumn Header="Column 8" />
<DataGridTextColumn Header="Column 9" />
<DataGridTextColumn Header="Column 10" />
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
您可以在命名空间中找到PrintDialog
:System.Windows.Controls
该函数可用于打印WPF控件,只需将该控件作为第一个参数传递。也许您可以将DataGrid放入ScrollViewer。然后,您可以通过水平滚动条查看所有12列。感谢您的建议,但不幸的是,scrollviewer无法真正为我工作,因为我需要在生成后打印它,并且我需要视图中的所有列。只需将您的DataGrid转换为类似ItemsControl的内容,其中包含您最初的列样式和样式以您想要的方式格式化为ItemTemplate您能解释一下您是如何打印的吗?我刚刚试着在我的答案中打印了
DataGrid
,它输出了整个DataGrid
。嗨,尼克,谢谢你的帖子。datagrid被导出为PDF格式,因此当从中打印时,只打印可见列Show large每个列是什么?我将上面的DataGrid
打印成PDF格式,但这些列非常小,因此非常适合页面。如果列太大,也许可以通过将结果旋转90°来查看如何打印到PDF。另外,试着找到有意义地收缩或分离数据的方法:)--如果您确实需要多个数据网格,这应该是可能的,但您需要查看如何操纵哪些列出现在C代码后面的哪个网格中。
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
dialog.PrintVisual(dataGrid1, "The Entire DataGrid");
}