2012-04-15 8 views
1

MouseMoveイベントの通知を受け取ることはできますか?私は次のXAMLを持っている:私の目標は、すべてのMouseMove ScrollViewerの上のイベント、またはのためのScrollViewerの上ManipulationMode =「コントロール」を設定に頼らなし、ParentContainerなどのそれにかなり近いものを得ることです WP7.1ですべてのMouseMoveイベントを処理できますか?

<Grid x:Name="ParentContainer"> <ScrollViewer> ... </ScrollViewer> </Grid> 

可能な限り最高のパフォーマンス。

ParentContainer(またはScrollViewer)でのMouseMoveの処理は、ManipulationMode = "Control"がScrollViewerで設定されているときに機能しますが、ManipulationMode = "System"では設定できません。 Mangoのパフォーマンスを向上させるように思えますが、ScrollViewerはMouseMoveイベントを飲み込んでパフォーマンスを向上させました。しかし、次のように私はそれらの取り扱いイベントを取得できることを期待したい:

ParentContainer.AddHandler(???.MouseMoveEvent, MyMouseMoveHandler, true); 

のSilverlightやWPFで私は、ルートにMyMouseMoveHandlerに、すべてのマウスイベントも取り扱うイベントをそのコードを期待します。残念ながら、私はAddHandlerに渡すMouseMoveEventの静的な定義を見つけることができません。

WPMでMouseMoveEventでAddHandlerを使用して成功した人はいますか?

私の最後の手段は、すべてのMouseイベントをキャプチャするが、処理されたものとしてマークし、それらがScrollViewerに伝播するかどうかを確認する、Background = "Transparent"のScrollViewerの上にオーバーレイを追加することです。

答えて

4

Windows Phone OS 7.1では、ScrollViewerコントロールのスクロールを特に改善するように変更されました。これを行うためには、タッチジェスチャーのリスニングを別のスレッドに移さなければなりませんでした。これは、コントロールがジェスチャーをどのように聴いたかについてのアーキテクチャレベルの変更を意味していました。 Windows Phone 7.1では、ScrollViewerのスクロールを担当する3つのスレッド(入力用、アニメーション用、および新しいアイテム作成用)が3つあります。

この変更の結果、ManipulationModeをControlに設定しない限り、このコントロールから処理されたマウスイベントをキャプチャすることはできません。あなたの質問に述べたように、スクロールのパフォーマンスを向上させるために加えられた変更は無効になります。

Windows Phone Phone Silverlight以外で動作するソリューションは、基本的なアーキテクチャがWindows Phone 7.1以降の基本的なアーキテクチャと異なるため、このケースでは機能しません。ここで

は、変更に関するマイクロソフトのブログ記事です:http://blogs.msdn.com/b/slmperf/archive/2011/06/02/listbox-scrollviewer-performance-improvement-for-mango-and-how-it-impacts-your-existing-application.aspx

+0

徹底的な答えBrianに感謝します。そうです、AddHandler()はSilverlight以外の方法です。私は回避策を見つけることを望んでいました(下記の私の答えを見てください)。 –

3

の代わりにそれが通知にユーザが画面に触れる任意の時間を受信するTouch.FrameReportedイベントを使用することが可能ですマウスイベントを探しています。このイベントは、ManipulationMode == SystemのScrollViewerを報告します。これは、WP7上のグローバルMouseMoveハンドラの適切な回避策のようです。

http://msdn.microsoft.com/en-us/library/system.windows.input.touch.framereported(v=vs.95).aspx

関連する問題