J'ai une application WPF qui s'exécute en tant que XBAP dans un navigateur. Sur quelques pages, tous les contrôles sont créés dynamiquement en fonction de ce que l'utilisateur sélectionne. Pour cette raison, il peut sembler que l'application ne fait rien tant que tous les contrôles ne sont pas chargés. Je voudrais avoir une sorte d'indicateur occupé affiché à la main pour montrer à l'utilisateur que les contrôles sont en cours de chargement, il ne doit pas être animé bien que ce serait bien si c'était le cas. J'ai regardé dans l'indicateur occupé de telerik mais ceci ne fonctionne pas car c'est vraiment pour obtenir des données pour un contrôle simple et ne montre pas jusqu'à ce que les contrôles soient chargés qui défait le but.WPF Meilleure façon d'afficher un indicateur occupé lors de la création dynamique d'une page
Je pensais d'abord afficher une superposition, ou quelque chose de similaire, contenant un logo de chargement, puis charger la page derrière celle-ci et cacher la superposition lorsque les commandes ont été chargées. Je me demandais si c'était la meilleure façon d'y parvenir ou s'il y avait un meilleur moyen?
Il n'y a pas de meilleur moyen que toutes les opérations UI doivent se produire dans le thread UI. Je suis inquiet, à propos de votre déclaration «Sur quelques pages, tous les contrôles sont créés dynamiquement en fonction de ce que l'utilisateur sélectionne». Cela semble que vous n'avez pas appliqué les modèles appropriés (MVVM) et que vous créez tous ces éléments d'interface utilisateur dans le code, ce qui serait mauvais et pourrait potentiellement causer tous ces problèmes de performance. montrer du code et peut-être que nous pouvons vous aider avec cela. –
Malheureusement, je ne suis pas autorisé à poster du code, mais une page peut contenir des boîtes de texte, des listes déroulantes, des listes déroulantes, des commandes utilisateur, etc. que l'utilisateur peut afficher ou masquer sur la page. personnalisable C'est le chargement de ces contrôles qui peut prendre le temps. C'est MVVM mais j'ai hérité du code alors peut-être qu'il y a quelque chose d'autre qui pourrait être fait aussi. Bravo de toute façon devra regarder cela et la superposition alors. – knappster
@knappster Comme le dit HighCode, il ne devrait pas être nécessaire de "charger" les contrôles personnalisés. Il existe quelques techniques disponibles pour y parvenir. Vous pouvez utiliser DataTriggers pour afficher/masquer certains contrôles en fonction d'une valeur de propriété, vous pouvez résumer vos ensembles de contrôles à UserControls et utiliser un DataTemplate (n'importe quel DataTemplateSelector) pour contrôler quel UserControl est utilisé. De toute façon je vais essayer d'offrir une réponse à votre vrai problème (sablier souris ci-dessous) – failedprogramming