1

ScrollViewer の MouseWheel イベントは、スクロールバーがトラックの最後 (上または下/左または右) にある場合にのみ発生します。その中間にある場合、MouseWheel イベントは発生しません。

マウスホイールが原因でスクロールが発生しているときにスクロールをキャプチャする方法についての手がかりはありますか?

4

3 に答える 3

1

スクロール イベントをキャプチャするには、次のコードを追加する必要があります。

public MainPage()
     {
      InitializeComponent();
      HtmlPage.Window.AttachEvent("DOMMouseScroll", OnMouseWheel);
      HtmlPage.Window.AttachEvent("onmousewheel", OnMouseWheel);
      HtmlPage.Document.AttachEvent("onmousewheel", OnMouseWheel);
      }

private void OnMouseWheel(object sender, HtmlEventArgs args)
      {
      // Your code goes here
      }

参考: http: //blog.thekieners.com/2009/04/06/how-to-enable-mouse-wheel-scrolling-in-silverlight-without-extending-controls/

(マウスホイール イベントをいじることなく) 実際に完全なスクロールを適切に機能させるには、この質問に対する私の回答を参照してください - How can I get the mouse wheel to work correctly with the Silverlight 4 ScrollViewer

于 2010-06-07T06:43:45.960 に答える
1

スクロール ビューアが実際にイベントを発生させています。イベントは処理中のため、ハンドラは呼び出されません。これを回避するには、AddHandler メソッドを使用してハンドラーを追加します。

UIElement.MouseWheel Eventを使用する代わりに、次のようにUIElement.AddHandler メソッドを使用します。

MyScrollViewer.AddHandler(FrameworkElement.MouseWheelEvent,
    delegate(object sender, MouseWheelEventArgs e)
    {
        //if e.Handled == true then the page was actually scrolled,
        // otherwise, the scrollviewer is either at the beginning or at the end
        if (e.Handled == true)
        {
            //Here, you can do what you need
        }
    },
true);
于 2010-06-24T03:57:06.973 に答える
0

@ダビドル1234:

    public delegate void SVMouseWheelDelegate(object sender, MouseWheelEventArgs e);
    public SVMouseWheelDelegate SVMouseWheelHandler { get; set; }

    private void SVMouseWheelHandlerLogic(object sender, MouseWheelEventArgs e)
    {
        //if e.Handled == true then the page was actually scrolled,
        // otherwise, the scrollviewer is either at the beginning or at the end
        if (e.Handled == true)
        {
            //Here, you can do what you need
        }
    }

次のように使用します。

MyScrollViewer.AddHandler(FrameworkElement.MouseWheelEvent, SVMouseWheelHandler, true);
于 2010-07-30T06:24:16.630 に答える