2009-04-05 12 views
1

これは、MS Surface用SDKサンプルショッピングカートと同様の状況です。Surface ContactがScatterView上にあるかどうかを検出する方法は?

私は2つのScatterViewを持つアプリケーションを持っています。最初のウィンドウは完全なサーフェスウィンドウ( 'サーフェス')をカバーします。 2番目はTagVisualizationオブジェクト( 'pod')に存在します。 1つ以上のポッドが利用可能な場合があります(複数のタグがテーブルに表示されている場合)。

私はScatterViewItemを 'pod'から 'surface'または別の 'pod'にドラッグできます。 ScatterViewItemがScatterViewの親を離れているかどうかを検出することに問題はありません。また、ScatterViewItemの親子化に問題はありません。

ただし、アイテムをドラッグしているScatterViewを検出する必要があります。 SDKサンプルでは、​​ScatterViewsの下にあるビジュアルエレメント(この場合は楕円)を使用しています。 VisualTreeHelper.HitTestは、接触が楕円の上にあるかどうかを判断するために使用されます。そうであれば、 '接続された' ScatterViewが見つかります。

私はこれがとても優雅な解決策ではないと思います。連絡先がScatterView上にあるかどうかを検出するために、ビジュアル要素を置くことは望ましくありません。

この種の「ヒットテスト」を達成するためには、すべての最初の

おかげで、 バート

答えて

1

まあ、私は&ドロップがすぐに表面に非常に簡単に取得する予定ですので、私はのadditonalの上にフレッティングあまりにも多くの時間を費やしていないでしょうドラッグ勘を持っています素子。

しかしこれを一般的な質問として扱う - ヒットテストを行うために必ずしもビジュアル要素を追加する必要はありませんが、ヒットテストはまだ特定の要素があるかどうかを判断する最良の方法です与えられた点。

あなたが話しているサンプルは、ヒットテストのための楕円を追加するだけではなく、「ポッド」の背景としても機能していました。だから、その楕円が境界を定義していたので、接触がその楕円の上にあったときにのみ、ドロップを扱いたいと思っていました。もう1つの方法は、スキャッタビューの背景を設定し、そのコントロールに対してヒットテストを行うことです。次に、 'ポッド'の境界線を四角形以外のものに変更する場合は、スキャッタビューにクリッピングパスを適用するとよいでしょう。

+0

私はバックグラウンドを行い、それはうまくいったが、エレガントではない。しかし、このプロジェクトのための時間枠では、それはしなければならなかった。ありがとう –

関連する問題