#c# #.net #wpf #datagrid #printing
#c# #.net #wpf #Сетка данных #печать
Вопрос:
У меня довольно длинная и широкая сетка данных, которую я хотел бы отправить на принтер. Но как мне распечатать его, если мне нужны все строки и столбцы. Он может заполнять несколько страниц — это не имеет значения.
Я использую WPF, C # и .Net 4.0
Вот моя сетка данных
<DataGrid Grid.Column="1"
AutoGenerateColumns="False"
ItemsSource="{Binding Tasks}"
Name="dataGrid"
LoadingRow="dataGrid_LoadingRow"
MouseMove="dataGrid_MouseMove">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Task ID" CellTemplate="{StaticResource hyperlinkTemplate}"></DataGridTemplateColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=TaskName}" Header="Task name" />
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=TaskResponsible}" Header="Task responsible" />
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=TaskResponsibleDepartment}" Header="Task responsible department"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=Category, ValidatesOnExceptions=True}" Header="Category" EditingElementStyle="{StaticResource CellEditStyle}"/>
<DataGridTextColumn Binding="{Binding Path=Status, ValidatesOnExceptions=True}" Header="Status" EditingElementStyle="{StaticResource CellEditStyle}"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=Priority, ValidatesOnExceptions=True}" Header="Priority" EditingElementStyle="{StaticResource CellEditStyle}" />
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=StartDate, StringFormat={}{0:yyyy MMMM dd}}" Header="Start date"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=ActualHours.TotalHours, StringFormat={}{0:0}}" Header="Actual hours" />
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=EstimatedHours.TotalHours, StringFormat={}{0:0}}" Header="Estimated hours" />
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=EstimatedDeploymentDate, StringFormat={}{0:yyyy MMMM dd}}" Header="Estimated deployment date" />
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=DesiredImplementationDate, StringFormat={}{0:yyyy MMMM dd}}" Header="Desired deployment date" />
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=APP.StartDate, StringFormat={}{0:yyyy MMMM dd}}" Header="APP - Start Date"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=APP.EstimatedHours}" Header="APP - Estimated hours"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=APP.ActualHours}" Header="APP - Actual hours"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=IN.StartDate, StringFormat={}{0:yyyy MMMM dd}}" Header="IN - Start Date"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=IN.EstimatedHours}" Header="IN - Estimated hours"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=IN.ActualHours}" Header="IN - Actual hours"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=SIS.StartDate, StringFormat={}{0:yyyy MMMM dd}}" Header="SIS - Start Date"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=SIS.EstimatedHours}" Header="SIS - Estimated hours"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=SIS.ActualHours}" Header="SIS - Actual hours"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=Tags}" Header="Tags"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Комментарии:
1. Вы думали об использовании FlowDocument и его табличного управления? Он обладает лучшими возможностями печати, AFAIK.
2. Знаете ли вы о хорошем руководстве по использованию документа?
3. Что ж, в msdn есть хорошая статья об этом (и таблицы тоже). Кроме этого, я могу только предложить поиск в Google.
Ответ №1:
Я просто отвечаю на этот вопрос для @icebat. Это можно сделать с помощью инструмента flow document .