2012-04-30 7 views
0

私はちょっとこの問題に悩まされています。WPF Touch Event Culling

私のアプリのUIには、背後にあるUIのさまざまな部分を表示するために変わる矩形と不透明マスクがあります。私がしたいことは、透明な領域の内部で発生するタッチイベントを介して、外部のものを止めることです。

ただし、イベントを許可する唯一の方法は、IsHitTestVisibleをFalseに設定することです。私は[Preview] TouchUp/Move/Downをキャプチャしようとしましたが、Falseに処理されましたが、これは違いはありません。

私には何かがありますか?

乾杯

UPDATE:申し訳ありませんが、それは明確ではなかった場合、私はタッチイベントが自分でフォールスルーすることを期待しないでください。私は彼らがマスクの中に落ちたかどうかを確認し、HandledをTrueに設定します。しかし、HandledをFalseに設定したとしても、イベントはまだ落ちないようです。私がしているように見えるイベントは、IsHitTestVisible = False以外のイベントを許可するものではありません。

答えて

0

これは通常の動作です。不透明度は不透明ですが、長方形は他のコントロールの上にあります。 不透明度の代わりにクリップを使用できます(ただし、不透明度はyes/no、色合いはありません) または 不透明度で表示または非表示にするすべてのコントロールの辞書を作成することができますマスク。次に、矩形のIsHitTestVisibleをfalseに設定し、プレビュー(TouchUp/Move/Down)イベントハンドラで、コントロールが表示されているかどうかに応じてイベントをキャンセルします。

+0

もう少し詳しい情報を追加しました。アップデートをご覧ください。下のオブジェクトの辞書を本当に管理する必要はありません。 – acron

+0

あなたが遭遇している振る舞いは正常です:イベントが矩形に達すると、この塗りつぶしのアルファチャンネル(不透明度)が0であっても、あなたのコントロールがユーザインタフェースの領域内にあり、異なるパネルの中にある場合、パネルVisibilityDictionnary(control)= trueの各コントロールのために、ディクショナリ内の可視ビットを設定/クリアするのは難しくありません。 。) – GameAlchemist