2010-10-29 5 views
1

J'ai fait une application qui montre une liste de client. Vous pouvez ouvrir un client et les détails du client sont affichés.Bonne conception de fenêtre XAML (performance)

Mon application prend beaucoup de temps à démarrer, donc je veux améliorer les performances de démarrage.

Dans pseude code, ma fenêtre principale ressemble à ceci

<Window> 
    <c:WelcomeAnimation Visibility="Visible" /> 
    <c:ClientList Visibility="Collapsed" /> 
    <c:ClientDetails Visibility="Collapsed" /> 
</Window> 

Maintenant, avant que la fenêtre principale est affichée, je vois que le ClientList et ClientDetails sont intialized. Cela prend du temps, donc je veux retarder cette initialisation et le faire quand la fenêtre principale est affichée et que le WelcomeAnimation est en cours d'exécution.

Cela donnera au moins l'impression que l'application démarre plus rapidement.

Question: Quelles sont mes options dans la conception de fenêtres. J'aime avoir la vue XAML ci-dessus. Je peux bien sûr faire tout en code-behind, donc ma fenêtre principale XAML ne sera plus que

<Window /> 

mais peut-être il y a de meilleures options que je ne suis pas au courant?

+0

XAML a des temps de démarrage médiocres - il y a peu de choses que vous allez probablement pouvoir faire pour le rendre beaucoup plus rapide. C'est joli et amusant de travailler avec, mais ..... Assurez-vous également que vous testez avec les versions de vos binaires ... dans mon expérience, le temps de démarrage pour les versions XAML de débogage est souvent extrêmement médiocre. –

Répondre

0

Cela dépend. Lorsque l'heure de démarrage est due au code que vous avez écrit vous-même (par exemple, appeler des services Web ou extraire des données de la base de données), n'exécutez pas ce code lors de l'initialisation, mais lancez le code.

Lorsque le temps de démarrage est en fait juste à cause du chargement du contrôle (par exemple, il s'agit d'un contrôle très complexe avec de nombreux visuels), vous avez deux options. Soit mettre un panneau de remplacement à la place du contrôle et remplir celui-ci une fois l'animation affichée. La deuxième option consiste à mordre la balle.

Encore une chose à noter. Si les temps de démarrage sont réellement dus à une grande quantité de visuels, l'initialisation devra être faite sur le thread de l'interface utilisateur de toute façon, donc l'animation ne jouera pas pendant le chargement du contrôle.

+0

Comment faire un "panneau de remplacement". Comment puis-je remplacer un contrôle par un autre? –

+0

Vous venez de créer un '' à la place de l'endroit où vous avez le contrôle maintenant, et lorsque vous êtes prêt à ajouter le panneau actuel, ajoutez-le en tant qu'enfant. Cet enfant prendra alors automatiquement tout l'espace du panneau de dock. –

+0

Bedankt Pieter! –

Questions connexes