私はWindowsストアアプリケーションに取り組んでおり、最初に押されたボタンが非アクティブになり、新しく「ドラッグされた」ボタンがアクティブになるようにボタン間をドラッグできるようにしたいのですが、これを機能させることができないようです。
StackPanel 内に 2 つのボタンがあり、それらにあるイベントは次のとおりです。
- PointerPressed
- ポインターが入力されました
- ポインターが解放されました
- ポインターが終了しました
- ポインターがキャンセルされました
- ポインターのキャプチャーロスト
PointerPressed と PointerEntered は同じイベント ハンドラーを共有し、残り (「非アクティブ化」イベント) は同じイベント ハンドラーを共有します。
1 つのボタンを押すと、「アクティブ化された」イベント ハンドラーがトリガーされ、ドラッグすると「非アクティブ化された」イベント ハンドラーがトリガーされますが、2 番目のボタンにドラッグしても、「アクティブ化された」イベント ハンドラーは再度トリガーされません。
奇妙なことに、StackPanel からボタンの 1 つにドラッグして開始すると、「アクティブ化された」イベント ハンドラーがトリガーされます。内部のポインター管理に関係していると思いますが、回避策が見つからないようです。
なぜこれが起こっているのか、どうすれば私が望むように動作させることができるのか誰にも分かりますか?
御時間ありがとうございます。
編集
さて、私はいくつかのことを調査していて、CapturePointer() と ReleasePointerCapture() に出くわしましたが、これは壊れているようです - ポインターをキャプチャすると、画面から指を離しても、PointerReleased はヒットしません。 .
また、「SPからボタンの1つにドラッグすると、ボタンが「アクティブ化」される」理由もわかりました-これは、ボタンが押されたときにイベントをルーティングせずにクリックイベントを発生させるためです-同じことを意味しますポインターは別のボタンの PointerEntered イベントを発生させることはできませんが、ボタンの外で開始すると PointerEntered をトリガーします。
これは私をさらに先に進めませんが、少し余分な情報です:)