2010-10-30 10 views
1

Je veux implémenter une fonctionnalité qui permet à un utilisateur de déplacer sa souris sur un bouton et une info-bulle apparaîtra. L'info-bulle affichera un aperçu réduit d'un ViewModel spécifique. J'ai implémenté la plupart de ceci, mais, si je prends l'approche la plus simple d'utiliser fondamentalement un ContentPresenter pour présenter le ViewModel, chaque fois que l'utilisateur déplace leur souris sur le bouton, telle que l'info-bulle est affichée, le ContentPresenter sera rendu, ce qui signifie que le modèle de données référentiel de type pour mon ViewModel sera rendu à chaque fois, ce qui causera trop de frais, ce que je ne veux pas, puisque le modèle de données contient des contrôles de tiers qui prennent plusieurs secondes rendre. Donc, à ma question .... comment cela peut-il être fait de façon à ce que l'aperçu ne soit rendu qu'au début, et ensuite stocké en mémoire pour être vu plus tard?Meilleure solution pour créer un aperçu MouseOver?

Chris

Répondre

0

On dirait que vous pourriez avoir besoin pour rendre et mettre en cache les commandes à l'avant, en utilisant les valeurs prévues pour les remplir. Ensuite, stockez leurs apparitions en tant que ImageBrushes, figées, dans un dictionnaire clé par leur configuration. Il ne semble pas que vous allez obtenir une solution de visualisation uniquement pour cette exigence très spécifique à l'application.

Dans quelle mesure les données de configuration de ViewModel varient-elles lorsque l'utilisateur interagit avec la page? Combien de temps pouvez-vous mettre en cache? Si vous connaissez toutes les données à l'avance, vous pouvez commencer à rendre les instantanés dès que vous chargez. Si vous attendez la saisie, vous ne pourrez peut-être pas compenser le temps de rendu là où l'utilisateur ne le remarquera pas. Mais il semble que c'est votre but, pour vous assurer que l'utilisateur ne paie pas le coût de rendu au point de passage de la souris. Peut-être un exemple d'instantané des données de l'échantillon ViewModel pertinentes ferait-il?

Questions connexes