質問

Silverlight 2アプリケーションでポップアップウィンドウを使用しています。これらは、タイトルバーをクリックしてドラッグすることにより、標準的な方法で移動できます。タイトルバーがブラウザのクロムの背後にあるサイトの外にドラッグされると、ウィンドウは移動できなくなります。

これには問題があると考えるユーザーがいるので、クロムの後ろに引っかかったときにウィンドウを移動できる他の方法があるのではないかと思っていました。

またはおそらく、ポップアップの一部がウィンドウから出ないようにする方法の方が良いでしょう。

役に立ちましたか?

解決 2

少し掘り下げた後、ポップアップ用の標準的なドラッグメカニズムはないが、同僚がそれを実装していることを発見しました。ホストウィンドウへのポップアップを制限するためにコードを簡単に拡張できました。それは少し奇妙に振る舞います。ゆっくりと滑らかにドラッグすると、ポップアップはホストウィンドウの端まで移動できますが、高速で不規則にドラッグすると、端に達する前に停止します。まだそれがなぜなのかを解明しようとしています。

他のヒント

マウスの動きは、個別の時間間隔で報告されます。つまり、マウスを速く動かすほど、報告されるマウスの位置は離れます。マウスをウィンドウの内側から外側に高速でドラッグすると、ウィンドウ内の位置(PointA)をレポートできますが、次のレポートはウィンドウの外側(PointB)になります。ドラッグ中にCaptureMouse呼び出しを使用すると、ポインターがホストウィンドウの外にあるときにマウス位置レポートを受信できます。ウィンドウの外に移動したことがわかったら、マウスがウィンドウの端にあると想定できます。つまり、PointAからPointBに架空の線を引く場合、最後の点がその線がウィンドウの境界と交差した場所であると想定できます。 MouseCaptureを使用していない場合、またはウィンドウなしのプラグインを使用している場合、ウィンドウの外側にドラッグするとマウスイベントが表示されるとは思わない。その場合、マウスがウィンドウの境界を越えた位置を推定することはより困難です。

これに対処する最善の方法は、ユーザーがブラウザウィンドウの外にドラッグできないようにすることです。これを行うには、 Silverlightホストコントロール。その情報を取得したら、ユーザーがウィンドウをドラッグするときにウィンドウの場所を確認し、ウィンドウの境界を越えないようにします。

Mouse_Leaveイベントが発生している可能性がありますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top