2009-12-02 4 views
6

Lorsque vous basculez entre les fenêtres de mon application WPF en plein écran, si c'est la première fois que l'écran est affiché, le moniteur devient noir momentanément avant l'affichage des fenêtres. Cela n'arrive que la première fois que la fenêtre est affichée. Existe-t-il un moyen de précharger chaque fenêtre afin que cela ne se produise pas?Pré-chargement de la fenêtre WPF

C'est ce que j'ai essayé:

myWindow.Show(); 
myWindow.Hide(); 

mais il y a un scintillement.

Alors j'ai essayé:

myWindow.Height = 0; 
myWindow.Width = 0; 
myWindow.WindowState = WindowState.Normal; 
myWindow.Show(); 
myWindow.Hide(); 
myWindow.Height = Screen.PrimaryScreen.Bounds.Height; 
myWindow.Width = Screen.PrimaryScreen.Bounds.Width; 
myWindow.WindowState = WindowState.Maximized; 

Pas de scintillement, mais quand je la fenêtre montre alors elle se montrait dans un état bizarre pour une fraction de seconde, puis mis à jour pour afficher correctement.

+0

Je veux juste ajouter que son problème non seulement des applications en plein écran. J'ai le même problème quand ouvrir une nouvelle fenêtre qui contient beaucoup de visuels. Le problème est de créer des milliers d'enveloppes différentes, par ex. pour les éléments dans les contrôles d'éléments, la première mise en page et le rendu. Le même problème est possible lors du passage à l'onglet contenant beaucoup de contrôles pour la première fois. Donc, si quelqu'un sait comment pré-charger le contrôle, ce serait vraiment génial. – levanovd

Répondre

0

J'ai eu un problème similaire. À la fin, j'ai créé un écran de démarrage et chargé les contrôles derrière l'écran de démarrage dans un fil séparé. Cela a arrêté le clignotement, mais a fait que l'application initail s'est chargée plus longtemps.

+0

comment avez-vous fait cela? instancier toutes les fenêtres de l'écran de démarrage sans les montrer? – SRKX