Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用XAML包装数据网格_C#_Xaml_Datatable_Wpfdatagrid - Fatal编程技术网

C# 用XAML包装数据网格

C# 用XAML包装数据网格,c#,xaml,datatable,wpfdatagrid,C#,Xaml,Datatable,Wpfdatagrid,我有一个由DataTable填充的DataGrid。问题是DataTable有12列,但只有9列将显示在DataGrid中,因为这是页面上的全部内容 有人知道如何包装DataGrid,使其余列显示在页面下方吗?或者我能解决这个问题的其他想法 谢谢我认为没有办法包装数据网格对象,相反,您可以将数据网格放在ScrollViewer中并启用HorizontalScroll ScrollViewer类不确定如何轻松包装它。我想您必须通过监视控件的宽度来管理显示哪些列(更不用说有多个数据表了)。讨厌!我建

我有一个由DataTable填充的DataGrid。问题是DataTable有12列,但只有9列将显示在DataGrid中,因为这是页面上的全部内容

有人知道如何包装DataGrid,使其余列显示在页面下方吗?或者我能解决这个问题的其他想法


谢谢

我认为没有办法包装数据网格对象,相反,您可以将数据网格放在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");
}