Erstellen Sie eine virtuelle Kopie des Grid -Elements und fügen Sie zu XPS -Dokument hinzuC#

Ein Treffpunkt für C#-Programmierer
Guest
 Erstellen Sie eine virtuelle Kopie des Grid -Elements und fügen Sie zu XPS -Dokument hinzu

Post by Guest »

Meine App erstellt aus einigen Benutzereingaben einige eindeutige Nummern und zeigt diese als QR-Codes an, damit sie ausgedruckt werden können.
Das ist die Funktion, vor der ich stehe ein Problem.

Code: Select all

private void Button_Click(object sender, RoutedEventArgs e)
{
listBox10.Visibility = Visibility.Collapsed;
PrintGrid.Visibility = Visibility.Visible;

GenerateUniqueNumber_v2.PrintTemplate printTemplate = new GenerateUniqueNumber_v2.PrintTemplate();

// Create a temporary ListBox to hold items for printing
ListBox tempListBox = new ListBox();

// Create a list to hold the filled templates
List filledTemplates = new List();

// Iterate over the items in the ListBox
for (int i = 0; i < listBox10.Items.Count; i++)
{
// Add the current item to the temporary ListBox
tempListBox.Items.Add(listBox10.Items[i]);

// Check if we have collected 6 items or if we are at the last item
if ((i + 1) % 6 == 0 || i == listBox10.Items.Count - 1)
{
// Call the print method with the current batch of items
var filledTemplate = printTemplate.FillPrintGridTemplate(tempListBox);
filledTemplates.Add(filledTemplate); // Add the filled template to the list
filledTemplate = null;
//filledTemplates.Add(printTemplate.FillPrintGridTemplate(tempListBox));
//Print_WPF_Preview(printTemplate.FillPrintGridTemplate(tempListBox));
// Clear the temporary ListBox for the next batch
tempListBox.Items.Clear();
tempListBox = new ListBox();
//printTemplate.Close();
}
}

Print_WPF_Preview(filledTemplates);

//printTemplate.Show();
// Close the print template if needed
//printTemplate.Close();
}
Ich habe eine Listbox mit den enthaltenen Elementen. Da auf einer Druckseite nur 6 Elemente angezeigt werden können, überprüfe ich, ob ich 6 Elemente habe oder das letzte Element habe, und übergebe sie an die FillPrintGridTemplate-Methode.
In diesem Fenster habe ich Ich habe ein Vorlagenraster erstellt, das ich jedes Mal fülle, wenn die WPF-Elemente übergeben werden, und anschließend das Raster zurückgebe.
Wenn ich nur
Ich habe darüber nachgedacht, ob es möglich ist, so etwas wie einen Klon des Netzes oder einige vorübergehende Netzelemente zu erstellen, natürlich mit ihren Kinderelementen. Ich werde also nicht jedes Mal das gleiche Netz überschreiben und mein Problem lösen. Oder gibt es einen besseren Weg, dies zu erledigen? Ich erhalte auch ein zufälliges leeres Papier zwischen jedem Mal, aber ich denke, das ist ein weiteres Problem < /p>
Bildbeschreibung eingebenpublic static void Print_WPF_Preview(List wpf_Elements)
{
string sPrintFileName = "print_preview.xps";

if (File.Exists(sPrintFileName))
{
File.Delete(sPrintFileName);
}

// Create XPS document
using (XpsDocument doc = new XpsDocument(sPrintFileName, FileAccess.ReadWrite))
{
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);
SerializerWriterCollator output_Document = writer.CreateVisualsCollator();
output_Document.BeginBatchWrite();

// Iterate over each FrameworkElement and write it to the document
foreach (var element in wpf_Elements)
{
output_Document.Write(element);
// Add a new page for each element
output_Document.Write(new PageContent());
}

output_Document.EndBatchWrite();

// Open the document for preview
FixedDocumentSequence preview = doc.GetFixedDocumentSequence();
GenerateUniqueNumber_v2.PrintWindow printWindow = new GenerateUniqueNumber_v2.PrintWindow(preview);
printWindow.Show();
}
}
[/code]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post