Laden...

WPF : FlowDocumentReader - Unterschiedliches Verhalten bei Aktionen

Erstellt von morbus85 vor 13 Jahren Letzter Beitrag vor 13 Jahren 977 Views
M
morbus85 Themenstarter:in
81 Beiträge seit 2009
vor 13 Jahren
WPF : FlowDocumentReader - Unterschiedliches Verhalten bei Aktionen

Hallo zusammen,

ich habe ein kleines Problem, wo ich nicht drauf komme wieso es so ist. Das FlowDocumentReader verhält sich ziemlich komisch was die Seitenanzahlaktualisierung angeht, wenn man jedes mal manuell in das unterstehende Object, in dem Fall FlowDocument, Objecte einfügt.
Wenn man die ganze Sache automatisiert, egal ob es eine Methode mit einer Schleife ist oder eine rekrusive Methode oder sogar, wenn man den Event des Buttons auslöst, der die Aktion startet, die Seitenanzahl bleibt immer 1, bis es auf den Bildschirm gelangt, erst dann wird die Seitenanzahl aktualisiert.
Ich habe schon alles mögliche versucht, von BeginInt() + EndInt() (dient zur Intialization) bis hin zum Layout Update.

Wer hat überhaupt eine Ahnung, denn das kluge Google gibt nichts gescheites her.

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

... die Seitenanzahl bleibt immer 1, bis es auf den Bildschirm gelangt, erst dann wird die Seitenanzahl aktualisiert.

Genau dort entscheidet sich doch auch erst wieviel Platz das Document bei der momentanen Darstellung, und damit wieviel Seiten, es benötigt. Einfach nur ein FlowDocument gibt noch gar nichts her.

Baka wa shinanakya naoranai.

Mein XING Profil.

M
morbus85 Themenstarter:in
81 Beiträge seit 2009
vor 13 Jahren

Hallo,

... die Seitenanzahl bleibt immer 1, bis es auf den Bildschirm gelangt, erst dann wird die Seitenanzahl aktualisiert.

Genau dort entscheidet sich doch auch erst wieviel Platz das Document bei der momentanen Darstellung, und damit wieviel Seiten, es benötigt. Einfach nur ein FlowDocument gibt noch gar nichts her.

Mhhh............ und wie kriege ich es hin, dass es nach jeder Eingabe aktuallisiert wird? 🙁

6.862 Beiträge seit 2003
vor 13 Jahren

Indem du dem FlowDocumentReader irgendwie klar machst, das sich das Dokument geändert hat und neu gezeichnet werden muss. Das Problem ist ja eigentlich das der Reader nicht mitbekommt das sich das Document geändert hat, weil das Blocks Property nur nen einfaches Property ohne Change Notification ist. Daher musst du ihm manuell verklickern das sich was geändert hat. Das könnte man z.B. durch Neuzuweisung des Documents im Reader machen. Oder eventuell durch Aufruf von InvalidateVisual, wobei ich mir da nicht sicher bin ob er die Daten des Dcuments dort zwangsweise neu lädt.

Baka wa shinanakya naoranai.

Mein XING Profil.

M
morbus85 Themenstarter:in
81 Beiträge seit 2009
vor 13 Jahren

Indem du dem FlowDocumentReader irgendwie klar machst, das sich das Dokument geändert hat und neu gezeichnet werden muss. Das Problem ist ja eigentlich das der Reader nicht mitbekommt das sich das Document geändert hat, weil das Blocks Property nur nen einfaches Property ohne Change Notification ist. Daher musst du ihm manuell verklickern das sich was geändert hat. Das könnte man z.B. durch Neuzuweisung des Documents im Reader machen. Oder eventuell durch Aufruf von InvalidateVisual, wobei ich mir da nicht sicher bin ob er die Daten des Dcuments dort zwangsweise neu lädt.

Problem gelöst, ich habe das Programm auf DocumentViewer mit PageContent & FixedPages umgeschrieben, wo ich jeder Seite eine bestimmte anzahl an Objekten zuweise. Ist auch besser so.

6.862 Beiträge seit 2003
vor 13 Jahren

Dann war deine ursprüngliche Entscheidung fürs FlowDocument schon nicht die richtige oder? Das wird ja grad benutzt um einen Text darzustellen der kein festes Layout hat.

Baka wa shinanakya naoranai.

Mein XING Profil.