2016-04-22 17 views
0

Ich versuche, eine Textseite aus einer UWP-App zu drucken, aber ich habe ein Problem mit der Ausrichtung. Zunächst einmal habe ich eine Seite erstellt, die folgende XAML enthält:TextBox-Ausrichtung beim Drucken aus UWP

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

Beachten Sie, wie der Textblock innerhalb des Gitters zentriert werden soll, ausgerichtet ist.

Dann drucke ich es mit den verschiedenen PrintDocument Event-Handler; dies der Code Vorschau zu drucken, es (vereinfacht Margen zu ignorieren und die Nicht-Druckbereich):

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

Und das ist, wie es druckt:

enter image description here

Beachten Sie, dass der Textblock nicht zentriert .

Wenn ich jedoch den Textblock in einem Grenz wickeln, wie folgt aus:

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

Dann ist es in Ordnung:

enter image description here

Kann jemand sehen, warum der Textblock nicht zentriert ist bei der Verwendung von das Original Xaml?

+0

Geben Sie vertikale Ausrichtung und horizontale Ausrichtung an, um auch das Gitter zu zentrieren. – Archana

+0

Das hat funktioniert, aber dann habe ich ein Problem, wenn ich andere TextBlocks an anderen Stellen, z. B. in der unteren rechten Ecke, ausgerichtet haben, so denke ich, dass das Raster die Seite füllen muss. Was ich gefunden habe, ist, dass ich eine TextBox anstelle eines TextBlocks mit einer BorderThickness von 0 verwenden kann, so dass es nur Text auf der gedruckten Seite ist. –

Antwort

1

Ich habe das gleiche Problem beim Upgrade von Windows 8.1 auf UWP-Projekt erfahren.

Wenn in UWP Druck, der TextBlock.VerticalAlignment und TextBlock.HorizontalAlignment Eigenschaften nicht wie erwartet funktionieren.

Wenn Sie jedoch ein Run Element anstelle der TextBlock.Text Eigenschaft, erscheinen sie wie erwartet funktionieren:

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

Alternativ Sie TextBlock.Margin für vertikale Ausrichtung verwenden können und TextBlock.TextAlignment für horizontale Ausrichtung.

Verwandte Themen