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 .

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top