« Scrolled en Viewport » -comme événement dans Silverlight
-
03-10-2019 - |
Question
Dans Silverlight, il est possible d'obtenir un événement de notification si un Control
(ou tout FrameworkElement
) a été dans la fenêtre défile et est maintenant visible?
Je veux mettre en œuvre quelque chose comme Lazy Charger images jQuery Plugin .
La solution
pourrait largement résoudre ce problème en maintenant. Avec l'aide de quelques méthodes d'extension de la boîte à outils Silverlight, nous pouvons trouver la ScrollBar
verticale intérieure pour toute FrameworkElement
par
Scrollbar myScrollBar = myContainerElement.GetVisualDescendants()
.OfType<ScrollBar>()
.Where(foundScrollBar => foundScrollBar.Orientation == Orientation.Vertical)
.FirstOrDefault();
On peut alors joindre à ses événements comme Scroll
ou ValueChanged
.
Ensuite, il y a une autre méthode d'extension utile Toolkit nous pouvons utiliser:
Rect? rect = myElement.GetBoundsRelativeTo(myViewportElement);
if (rect.HasValue)
{
if (rect.Value.Top <= myViewportElement.ActualHeight)
{
// do some stuff
}
}
Autres conseils
forums Silverlight poster d'Octobre 2009 traite de l'absence de un événement « VisibilityChanged » dans Silverlight et vient avec la solution d'utiliser l'événement « chargé »:
L'événement Loaded est généralement un bon endroit pour commencer la récupération de données.
Avec des commandes de l'onglet, l'événement Loaded pour un élément sur un onglet ne sera pas soulevée jusqu'à ce qu'un utilisateur navigue à l'onglet l'élément est.
Je sais que ce n'est pas strictement analogue à votre situation, mais il pourrait être intéressant d'essayer de voir si cela fonctionne pour un Control
ou FrameworkElement
.