2

Control在 Silverlight 中,如果 a (或 any FrameworkElement)已滚动到视口中并且现在可见,是否有任何方法可以获取通知事件?

我想实现类似Lazy Load Images jQuery Plugin的东西。

4

2 回答 2

3

现在可以在很大程度上解决这个问题。借助 Silverlight Toolkit 的一些扩展方法,我们ScrollBar可以FrameworkElement通过

Scrollbar myScrollBar = myContainerElement.GetVisualDescendants()
        .OfType<ScrollBar>()
        .Where(foundScrollBar => foundScrollBar.Orientation == Orientation.Vertical)
        .FirstOrDefault();

然后我们可以附加到它的事件上,比如Scrollor ValueChanged

然后我们可以使用另一种有用的 Toolkit 扩展方法:

Rect? rect = myElement.GetBoundsRelativeTo(myViewportElement);
if (rect.HasValue)
{
    if (rect.Value.Top <= myViewportElement.ActualHeight)
    {
        // do some stuff
    }
}
于 2010-05-07T09:41:09.910 回答
1

这篇2009 年 10 月的Silverlight 论坛帖子讨论了 Silverlight 中缺少“VisibilityChanged”事件,并提出了使用“Loaded”事件的解决方案:

Loaded 事件通常是开始检索数据的好地方。

使用选项卡控件,在用户导航到该元素所在的选项卡之前,不会引发选项卡上元素的 Loaded 事件。

我知道这与您的情况并不严格相似,但可能值得尝试看看它是否适用于 a Controlor FrameworkElement

于 2010-05-05T10:46:02.453 回答