2010-10-10 7 views
1

Probablement une question simple, mais mon cerveau ne fonctionne pas aujourd'hui. Je suis en train d'écrire un petit script PowerShell pour faire diverses tâches. Ces tâches sont regroupées logiquement dans des onglets à l'aide d'un contrôle TabFontrol WPF.Rendu TabItem dans WPF (avec powerhsell)

Deux onglets effectuent des vérifications pour comparer les dates de fichier local avec les dates de fichier du serveur, ce qui prend un peu de temps. (Seulement quelques secondes, certes, mais cela signifie que l'onglet ne restitue pas tant que les dates de version du fichier n'ont pas été trouvées.)

Donc, quand le script est exécuté, il s'ouvre (rapidement) et affiche le premier onglet. J'utilise la commande suivante pour générer le contenu pour le reste des onglets à la volée lorsque chaque onglet est sélectionné:

$Tabs = $d.FindName('Tabs') 
$Tabs.Add_SelectionChanged({ GenerateContent ($Tabs.SelectedItem).Header}) 

Jusqu'à présent, si bon, mais tel qu'il est lorsque vous sélectionnez un de ces onglets, il apparaît accrocher pendant que mon script obtient l'information dont il a besoin. Ce que je veux faire est de passer immédiatement à l'onglet, puis de générer un "Please wait .." pendant qu'il obtient l'information, puis actualiser la page avec les informations dont j'ai besoin.

Quelqu'un peut-il suggérer un bon moyen de le faire?

Ta,

Ben

Répondre

2

BackgroundWorker - Ce que vous devez faire est de traitement de l'exécution du script sur un thread séparé de sorte que votre thread d'interface utilisateur est libre et vous pouvez montrer le « S'il vous plaît patienter ... » message. Lorsque l'exécution est terminée, vous devez mettre à jour l'interface utilisateur à ce sujet.

S'il vous plaît se référer, http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx