none
Windows 10 Universal App - Drucken RRS feed

  • Frage

  • Hallo,

    ich habe bereits eine App für Windows 8.1 programmiert und wollte diese nun auch für Windows 10 zur Verfügung stellen. Ich habe alles soweit für Windows 10 angepasst und nun scheitere ich aber an der Druckfunktion. Aus der App heraus können Daten gedruckt werden. Da die Daten übersichtlich in Tabellenform gedruckt werden sollen, wird die Druckseite codeBehind-mäßig in einem InlineUIContainer innerhalb eines RichTextBlock aufbereitet. Das Ganze sieht letztlich in Etwa folgendermaßen aus:

    <RichTextBlock xml:space="preserve" x:Name="TextContent" Grid.Row="1" OverflowContentTarget="{Binding ElementName=FirstLinkedContainer}" FontSize="18" IsTextSelectionEnabled="True" TextAlignment="Left" FontFamily="Segoe UI" VerticalAlignment="Top" HorizontalAlignment="Left"> <Paragraph> <InlineUIContainer> <Border Padding="2" BorderBrush="Black" Width="675" BorderThickness="1"> <StackPanel Orientation="Vertical"> <StackPanel Height="20" Orientation="Horizontal"> <TextBlock Text="Ticket 1" Width="105" FontSize="14" FontWeight="Bold"/> <TextBlock Text="Los Nr.: 1234567" Width="120" FontSize="14" FontWeight="Bold"/> </StackPanel> ... noch mehr Xaml </StackPanel> </Border>

    </InlineUIContainer> </Paragraph> </RichTextBlock>

    Das Problem unter Windows 10 ist nun, dass die Abstände der TextBlöcke total auseinandergezogen werden. Dies wird in der Druckvorschau als auch im Druck selbst so dargestellt. Der gleiche Code unter Windows 8/8.1 funktioniert tadellos.

    Was kann ich tun, damit das auch unter Windows 10 so formatiert wird wie unter Windows 8.1?

    PS: Bilder kann ich leider noch nicht einfügen, kann ich aber noch nachholen.

    mfg toni

    Sonntag, 9. August 2015 23:06

Antworten

Alle Antworten

  • Hallo Toni,

    ich habe deinen XAML Code mal in eine Windows Store App (Windows 8.1) in VS 2013 sowie in VS 2015 unter Windows 10 mit einem UAP hinein kopiert. Augenscheinlich sieht das in der Page für mich gleich aus. Entwederr wird das Problem also von anderen Controls oder vom Drucker-Code verursacht.

    Poste daher bitte den gesamten XAML Code sowie den Code zum drucken. Alternativ auch den Code womit sich das Problem durch einfaches Kopieren reproduzieren lässt.

    Deiner Beschreibung nach würde ich zunächst auf die Eigenschaften Margin, Padding sowie die Control Alignments tippen die das verursachen.

    PS: Um dein Konto bestätigen zu lassen, antworte bitte auf Verify Your Account.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Sonntag, 9. August 2015 23:47
  • Hallo,

    der Code sieht in einer normalen XAML Page auch gleich aus, nur in der Druckvorschau von Windows 10 und beim Drucken selbst wird die Width Angabe der Textblöcke total zerrissen. Der erste TextBlock hat eine Breite von 105 Pixel, danach kommt dann der nächste TextBlock mit einer Breite von 120 Pixel usw. (kein Padding oder Margin). In der Druckvorschau wird daraus dann aber jeweils ca. der dreifache Wert, also nicht 105, sondern 315 Pixel. So stehen die Texte dann auch in der Vorschau und auf dem Papier nach dem Druck. Es wirkt sich scheinbar nur auf TextBlöcke aus, andere Width Angaben scheinen zu stimmen. Ich habe natürlich schon viel getestet und wollte den ganzen Code umbauen, alles in Canvas reinpacken und jeden Textblock direkt positionieren. Selbst das geht nicht, nur wenn ich bspw. beim zweiten TextBlock Canvas.Left="50" angebe, würde es funktionieren, aber eben nur in der Druckvorschau, nicht in der normalen XAML Page Ansicht. Da würden sich die Texte dann logischerweise überlappen. 

    Da das Ganze doch recht umfangreich ist, kann man so natürlich nichts vernünftig aufbauen. Ich gehe da doch von einem Bug in Windows 10 aus.

    Wenn es jemand testen möchte, es gibt ja hier ein Sample https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Printing

    Dort dann einfach in der PageToPrint.xaml statt den ganzen <Paragraph meinen obigen Code einfügen und vielleicht noch mit weiteren TextBlöcken erweitern. Da sieht man es dann ganz genau.

    mfg toni

    Montag, 10. August 2015 01:25
  • Hi,

    nach langem Probieren hab ich nun eine vorläufige Lösung gefunden. Mit negativen Margins in den Textblöcken lässt sich der Text vorläufig einigermaßen ausrichten. Ich hoffe, da wird von Microsoft noch nachgebessert.

    mfg toni

    Dienstag, 18. August 2015 17:40