在XAML中包装DataGrid

时间:2014-09-10 15:12:35

标签: c# xaml datatable wpfdatagrid

我有一个由DataTable填充的DataGrid。问题是DataTable有12列,但只有9列会显示在DataGrid中,因为它们都适合页面。

任何人都知道如何包装DataGrid,以便其他列显示在页面的下方?或者我如何解决这个问题的任何其他想法?

由于

2 个答案:

答案 0 :(得分:0)

我认为没有办法包装数据网格对象,而是可以将DataGrid放在ScrollViewer中并启用Horizo​​ntalScroll。

ScrollViewer类http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer%28v=vs.110%29.aspx

答案 1 :(得分:0)

不确定如何轻松包装。我想你必须通过监控控件的宽度来管理显示哪些列(更不用说有多个数据表)。呸!我建议您将DataGrid插入ScrollViewer内部。这将与许多其他用户界面保持一致,从而使您的应用程序更容易被理解。

只需确保将HorizontalScrollBarVisibility属性设置为AutoVisible

请参阅下面的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>

这会在下面创建DataGrid

Scrolling Datagrid

修改 由于您需要打印DataGrid,我会发布一个关于如何打印它的代码段。这将打印整个DataGrid;但是,如果您的DataGrid确实太大,那么您可能需要查看修改输出图像。

PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
    dialog.PrintVisual(dataGrid1, "The Entire DataGrid");
}

您可以在命名空间中找到PrintDialogSystem.Windows.Controls PrintDialog.PrintVisual函数可用于打印WPF控件,只需将控件作为第一个参数传递。