2

ControlSilverlightで、 (またはいずれかFrameworkElement)がビューポートにスクロールされて表示された場合に通知イベントを取得する方法はありますか?

Lazy LoadImagesjQueryプラグインのようなものを実装したいと思います。

4

2 に答える 2

3

今ではこれを大部分解決できます。ScrollBarSilverlight Toolkitのいくつかの拡張メソッドの助けを借りて、次のいずれかの内部垂直をFrameworkElement見つけることができます。

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

Scroll次に、またはのようなイベントにアタッチできます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イベントは発生しません。

私はそれがあなたの状況と厳密に類似していないことを知っていますが、それがまたはで機能するかどうかを確認する価値があるかもしれませControlFrameworkElement

于 2010-05-05T10:46:02.453 に答える