Laden...

[erledigt] WPF - Usercontrol feuert auf Pageframe permanent das Loaded

Erstellt von m.grauber vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.193 Views
M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren
[erledigt] WPF - Usercontrol feuert auf Pageframe permanent das Loaded

Hallo,

bei der Erstellung eines WPF-Usercontrols bin ich bislang davon ausgegangen, dass dessen Loaded-Methode nur einmal nach dem Laden der Form gefeuert wird.

Dies ist aber nicht so, wenn sich das Usercontrol auf einem Pageframe befindet. Dann wird auch bei jedem Wechsel auf die zugehörige Page Loaded gefeuert! 😜

Gibt es einen empfohlenen Weg, um diesen Fehler?! zu umgehen, außer das man mit einem Boolwert arbeitet?

Danke!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

Ein Fehler ist das nicht, siehe Doku

Therefore Loaded cannot be assumed to occur only when a page is first loaded through navigation to the page. .
Loaded kann sehr oft auftreten unter Umständen. Da gibts auch nichts um das zu verhinden. Vielleicht ist aber Initialized das geeignetere Event für dein Vorhaben.

Baka wa shinanakya naoranai.

Mein XING Profil.

1.378 Beiträge seit 2006
vor 13 Jahren

Hallo m.grauber,

meine Empfehlung ist alle relevanten Informationen, die du nach einem Pagewechsel noch benötigst in einem ViewModel zu halten, da eben alles in der View bei Pagewechsel verloren geht. Und dort wäre das Äquivalente der Konstruktor oder eine eigene Intialisierungsmethode.

Lg XXX

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

es gibt auch noch das KeepAlive Property der Page Klasse, aber das sollte man mit Bedacht setzen.

Baka wa shinanakya naoranai.

Mein XING Profil.

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo xxxprod und talla,

Danke für Eure Hilfe! 👍 👍

KeepAlive habe ich versucht und in verschiedenen Szenarien eingesetzt (teils mit JournalEntry). TabControl, die jeweilige Page und im Control. Damit funktioniert es scheinbar nicht.

Baut man in der jeweiligen Page eine <Page> mit KeepAlive ein, gibt es beim Wechseln eine Fehlermeldung:

Für die Page sind nur "Window" oder "Frame" als übergeordnete Elemente zulässig.

Ich führe den Code nun im Loaded nur einmal aus und ignoriere weitere Aufrufe. Der Loaded ist für mich zwingend, da erst da das Binding steht.

Vielen Dank nochmals!

Grüße

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]