
124909
24.03.2016
Powershell: Elemente der WPF-GUI beim ersten starten updaten
Hallo Freunde,
ich denke das ist eher was für die Powershell-Cracks:
Ich habe ein Programm geschrieben welches ein Inkrementelles Backup vom Desktop ins persönliche Netzlaufwerk tätigt.
Dies ist meiner GUI, über WPF realisiert, dort sind noch Buttons wie z.B jetzt sichern, später sichern, nicht sichern eingebunden und mit Events geschmückt.
Außerdem zeigt die Maske auch die zu sichernden Daten an mit der LastWriteTime. Soweit funktioniert auch alles nun mein Problem:
Ich habe das ganze in eine .exe -Umgewandelt, wenn ich diese jetzt starte sind alle Labels und Textboxen leer, diese werden über Funktionen gefüllt. Mir ist aufgefallen, dass in der Powershell-ISE die Labels und Textboxen auch erst nach dem 2. mal aktualisiert werden mit den bestimmten Inhalten.
Ich denke Powershell lädt immer erst die Maske und beim 2. mal compilieren aktualisiert sie die einzelnen Elemente.
Welche Möglichkeiten gibt es, dass Powershell nun also 2 Hintergrundjobs ausführt (Maske laden und Elemente füllen), ich habe leider kein Ansatz wie ich danach suchen soll.
Vielen Dank vorab & Frohe Ostern
ich denke das ist eher was für die Powershell-Cracks:
Ich habe ein Programm geschrieben welches ein Inkrementelles Backup vom Desktop ins persönliche Netzlaufwerk tätigt.
Dies ist meiner GUI, über WPF realisiert, dort sind noch Buttons wie z.B jetzt sichern, später sichern, nicht sichern eingebunden und mit Events geschmückt.
Außerdem zeigt die Maske auch die zu sichernden Daten an mit der LastWriteTime. Soweit funktioniert auch alles nun mein Problem:
Ich habe das ganze in eine .exe -Umgewandelt, wenn ich diese jetzt starte sind alle Labels und Textboxen leer, diese werden über Funktionen gefüllt. Mir ist aufgefallen, dass in der Powershell-ISE die Labels und Textboxen auch erst nach dem 2. mal aktualisiert werden mit den bestimmten Inhalten.
Ich denke Powershell lädt immer erst die Maske und beim 2. mal compilieren aktualisiert sie die einzelnen Elemente.
Welche Möglichkeiten gibt es, dass Powershell nun also 2 Hintergrundjobs ausführt (Maske laden und Elemente füllen), ich habe leider kein Ansatz wie ich danach suchen soll.
Vielen Dank vorab & Frohe Ostern
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 300007
Url: https://administrator.de/forum/powershell-elemente-der-wpf-gui-beim-ersten-starten-updaten-300007.html
Ausgedruckt am: 01.05.2025 um 17:05 Uhr
8 Kommentare
Neuester Kommentar

Zitat von @124909:
Ich habe das ganze in eine .exe -Umgewandelt,
Mit welcher Methode?Ich habe das ganze in eine .exe -Umgewandelt,
wenn ich diese jetzt starte sind alle Labels und Textboxen leer, diese werden über Funktionen gefüllt. Mir ist aufgefallen, dass in der Powershell-ISE die Labels und Textboxen auch erst nach dem 2. mal aktualisiert werden mit den bestimmten Inhalten.
ISE und testen von WPF GUI ist sehr fehlerbehaftet wenn man die Ressourcen nicht konsequent entlädtund die Garbage Collection laufen lässt
Ich denke Powershell lädt immer erst die Maske und beim 2. mal compilieren aktualisiert sie die einzelnen Elemente.
Nein. Das liegt an deinem Code.Welche Möglichkeiten gibt es, dass Powershell nun also 2 Hintergrundjobs ausführt (Maske laden und Elemente füllen), ich habe leider kein Ansatz wie ich danach suchen soll.
Zum Entwickeln von WPF GUIs nicht die ISE benutzen.Gruß jodel32

Was schlägst du also vor ?
Zum Skripten reicht ein Texteditor deiner Wahl. Und zum ausführen (Testen) eine separate PS Konsole.Visual Studio kannst du natürlich auch verwenden.

Zitat von @124909:
Und zu meinem Problem hilft mir was ?
Korrekt geschriebener Code für WPF.Und zu meinem Problem hilft mir was ?
Von deinem ist hier aber nichts zu sehen

Alles klar ich sehe den Fehler, du rufst in deinem XAML Code eine Powershellfunktion auf dies es zu diesem Zeitpunkt noch gar nicht gibt ! Die Felder können also aus Prinzip dann keinen Inhalt haben 
Dazu musst du die Funktionen (CompareDesktopUserhomeTime etc.) schon vor der Deklaration der Variablen des XAML Codes schreiben. Dann geht das.
Das ist auch der Grund warum es erst später geht, weil dann ja deine Funktionen bereits vom Codeablauf her existieren.
Powershell ist immer noch eine Skriptsprache, dort kann man Funktionen nicht irgendwo platzieren, sondern diese müssen vor der Verwendung schon existieren, also im Code vor der eigentlichen Verwendung stehen.
Außerdem ruft man Powershellfunktionen nicht mit Klammern um die Parameter auf.
Dazu musst du die Funktionen (CompareDesktopUserhomeTime etc.) schon vor der Deklaration der Variablen des XAML Codes schreiben. Dann geht das.
Das ist auch der Grund warum es erst später geht, weil dann ja deine Funktionen bereits vom Codeablauf her existieren.
Powershell ist immer noch eine Skriptsprache, dort kann man Funktionen nicht irgendwo platzieren, sondern diese müssen vor der Verwendung schon existieren, also im Code vor der eigentlichen Verwendung stehen.
Außerdem ruft man Powershellfunktionen nicht mit Klammern um die Parameter auf.
$(CompareDesktopUserhomeTime 7)