从UWP打印时的TextBox对齐方式

时间:2016-04-22 07:04:16

标签: xaml win-universal-app

我试图从UWP应用程序打印一页文本,但我对齐问题。首先,我创建了一个包含以下xaml的页面:

<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);
}

这就是它打印的方式:

enter image description here

请注意,TextBlock未居中。

但是,如果我将TextBlock包装在边框中,如下所示:

<Grid Background="White">
    <Border HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="Welcome Printed World!" FontSize="36" Foreground="Black"/>
    </Border>
</Grid>

然后很好:

enter image description here

在使用原始xaml时,有人可以看到为什么TextBlock没有居中?

1 个答案:

答案 0 :(得分:1)

从Windows 8.1升级到UWP项目时遇到了同样的问题。

在UWP中打印时, TextBlock.VerticalAlignment TextBlock.Horizo​​ntalAlignment 属性无法按预期工作。

但是,如果您使用运行元素而不是 TextBlock.Text 属性,它们似乎按预期工作:

<TextBlock FontSize="36" Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Center">
    <Run Text="Welcome Printed World!" />
</TextBlock>

或者,您可以使用 TextBlock.Margin 进行垂直对齐,使用 TextBlock.TextAlignment 进行水平对齐。