Flowdocument nach Laden Inhalt aktualisieren und als XPS Datei speichern

  • WPF

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Flowdocument nach Laden Inhalt aktualisieren und als XPS Datei speichern

    gegeben: Flowdocument mit TextBox. Text = "Max Mustermann"

    Das FlowDocuement wird in einen Frame geladen. Nach dem Laden, während der Anzeige wird TextBox. Text in "Fritz Fleisig" geändert und das Flowdocument als XPS Datei erstellt.

    Allerdings wird beim Erstellen nicht der aktualisierte Text übernommen sondern der ursprüngliche Text "Max Mustermann" erstellt.

    Wie übergebe ich den geänderten Text an das angezeigte Flowdocument und erstelle eine xps Datei mit geändertem Inhalt?

    Zum erstellen der XPS Datei verwende ich folgende Prozedur:

    VB.NET-Quellcode

    1. Dim datum As Date = Date.Today
    2. Dim titel As String = Me.lbl_status.Content
    3. Dim fileName As String = datum & "-" & titel & ".xps"
    4. Dim page_kv_voll_angebot As New kv_voll_angebot
    5. Dim druckbereich = page_kv_voll_angebot.MyFlowDocument
    6. Dim IDocumentPaginatorSource As IDocumentPaginatorSource = druckbereich
    7. If Me.lbl_status.Content = "Angebot Krankenvollversicherung" Then
    8. If (File.Exists(fileName)) Then
    9. File.Delete(fileName)
    10. Else
    11. Dim xps As XpsDocument = New XpsDocument(fileName, FileAccess.Write)
    12. Dim writer As XpsDocumentWriter = XpsDocument.CreateXpsDocumentWriter(xps)
    13. writer.Write(CType(druckbereich, IDocumentPaginatorSource).DocumentPaginator)
    14. xps.Close()
    15. End If
    16. Process.Start(fileName)
    17. End If


    D.h. die Änderung des TextFeldes muß an das bereits geladene FlowDocument übergeben werden, das Dokument aktualisiert und als XPS ausgegeben werden. Wie geht das?
    Hallo

    Genau hierfür gibt es das Bindingsystem in der WPF. Da du auch meine Ratschläge in den anderen Threads nicht eingehst oder diese ignorierst bleibt mir nichts anderes als zu sagen: Selbst schuld.
    Du wirst wegen jeder kleinigkeit anstehen.

    Ich sehe hier in dem Code nirgens wo ein neuer Name zugeordnet wird oder der Text aus einer TextBox kommt.
    Hast du im XAML ein Binding drauf? Dann wäre es eben auch interessant den XAML zu zeigen.

    Thomas2705 schrieb:

    Nach dem Laden, während der Anzeige wird TextBox. Text in "Fritz Fleisig" geändert

    Tja, und das sehe ich eben nicht. Wie sollen wir dir Helfen.

    PS: Wenn in einem deiner Threads eine Antwort geholfen hat ist es meist üblich das man dies auch nochmals als Antwort schreibt und evtl. seinen nun fertigen Code zeigt damit User welche über Suchmaschinen hier her kommen dies auch sofort übermittelt bekommen das dies nun die Lösung des Problems war.
    Zumindest sofern es geholfen hat und du dein Problem losgeworden bist.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo Sascha

    Wenn ich eine Frage zu einem Problem habe was ich zum heutigen Zeitpunkt nicht selbst lösen kann dann frage ich hier nach einer Lösung hier im Forum weil ich der Meinung war das es oft eine geeignete Lösung für meinen Durchführungsweg gibt.
    Ich bin nicht der Meinung, dass ich mich hier nach einer Antwort "anstelle" weil ich bisher glaubte,dass die Beantwortung und Hilfe bisher freiwillig geschah und für keinen eine besondere Last oder Verpflichtung darstellt.
    Ich lese ein Buch zum Thema VB. Es kann natürlich sein, dass ich kein besonders guter Schnelldenker bin und mir das Verständnis des Selben in der Regel etwas Probleme bereitet. Wenn es Dich (oder irgendeinen anderen )stört, ignoriere einfach meine Frage, überlese Sie, beachte es nicht... nicht jede Antwort ist auch eine Lösung meiner Fragen.

    Jetzt noch mal zur Frage; die TextBox zum Namen "Max Mustermann" befindet sich im Flowdocument. Der Text komt nicht von einem anderen Control sondern wird im zu ändernden Control direkt eingegeben. D.h. es müßte ein Binding im Control erstellt werden welches auf sich selbst verweist.

    Es wird genau der Inhalt des Flowdoc. als XPs erstellt der unmittelbar nach dem Laden visualisiert wird. D.h. der Inhalt der TextBox muß noch vor dem Laden des Flowdoc. aktualisiert werden. Selbt beim Laden der Page in dem sich das Flowdoc. befindet ist es schon zu spät für einen aktalisierte Ausgabe als XPS.
    Im Xaml ist er TextBox folgendes Zugeordnet:

    XML-Quellcode

    1. <TextBox Name="TxtBx1" Text="Max Mustermann"/>


    Wenn der Text während der Anzeige geändert wird, wird die Änderung nichts in's XPS übernommen sondern der im XAML hinterlegte Text. Änderungen nach dem Laden werden ignoriert.

    Meine Frage war:

    D.h. die Änderung des TextFeldes muß an das bereits geladene FlowDocument übergeben werden, das Dokument aktualisiert und als XPS ausgegeben werden. Wie geht das?


    ( Sascha; wenn es Dir unangenehm ist oder es Dir sinnlos erscheint zu antworten oder Dich mit der Frage zu beschäftigen; einfach ignorieren....)

    Vielen Dank
    Thomas
    Hallo

    Zwar sehe ich nirgends in meinem Post das ich dich angegriffen hätte aber gut.
    ICh habe dich nun bereits mehrmals darauf hingewiesen das in der WPF mit Binding gearbeitet werden soll damit man eben genau solche Probleme NICHT hat. Du hast diese Ratschläge ignoriert.
    Das nennt man "Beratungresistent".

    Was mein anderes anliegen betrifft (anderer Thread von dir): Bekommt man eine Antwort gibt man entweder Bescheid das es geholfen hat oder eben das es nicht geholfen hat. Mehr wollte ich nicht.

    Anders als du leider, werde ich aber deinen Rat befolgen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##