Я пытаюсь распечатать страницу текста из приложения UWP, но у меня проблема с выравниванием. Прежде всего, я создал страницу, которая содержит следующую XAML:Выравнивание TextBox при печати из UWP
<Grid Background="White">
<TextBlock Text="Welcome Printed World!" FontSize="36" Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
Обратите внимание, как TextBlock выровнен по центру внутри сетки.
Затем я печатаю его с помощью различных обработчиков событий PrintDocument; это код для печати предварительного просмотра он (упрощенно игнорировать поля и непечатаемую область):
Page printPage;
private void OnPrintDocumentPaginate(object sender, PaginateEventArgs e)
{
// Construct an instance of the page to print, and tell Windows that there is only 1 page
this.printPage = new PrintPage();
printDocument.SetPreviewPageCount(1, PreviewPageCountType.Final);
}
private void OnPrintDocumentGetPreviewPage(object sender, GetPreviewPageEventArgs e)
{
// Give Windows a reference to the page to print for preview
this.printDocument.SetPreviewPage(e.PageNumber, this.printPage);
}
И это, как он печатает:
Обратите внимание, что TextBlock не по центру ,
Однако, если я оберните TextBlock в границы, как это:
<Grid Background="White">
<Border HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="Welcome Printed World!" FontSize="36" Foreground="Black"/>
</Border>
</Grid>
Тогда это прекрасно:
Кто-нибудь может понять, почему TextBlock не центрирован при использовании оригинальный xaml?
Дайте вертикальное выравнивание и горизонтальное выравнивание в центре сетки. – Archana
Это сработало, но тогда у меня есть проблема, если я хочу, чтобы другие TextBlocks выровнялись в других местах, например, в нижнем правом углу, поэтому я думаю, что сетка должна заполнить страницу. Я обнаружил, что я могу использовать TextBox вместо TextBlock с BorderThickess 0, так что это просто текст на печатной странице. –