2009-04-05 18 views
1

Il s'agit d'une (ou d'une) situation similaire à celle du panier d'échantillons de SDK pour MS Surface.Comment détecter si un contact de surface est sur un ScatterView?

J'ai une application avec deux ScatterViews. Le premier couvre la fenêtre Surface complète ('surface'). La seconde réside dans un objet TagVisualization ('pod'). Il peut y avoir plus d'un pod disponible (si plus d'un tag est sur la table). Je voudrais être capable de faire glisser un ScatterViewItem du 'pod' vers la 'surface' ou un autre 'pod'. Je n'ai aucun problème à détecter si un ScatterViewItem quitte son parent ScatterView. En outre, aucun problème dans la réparation du ScatterViewItem. Cependant, je veux détecter quel ScatterView l'article est traîné. Dans l'exemple SDK, ils ont utilisé un élément visuel (une ellipse dans ce cas) qui est en dessous de ScatterViews. VisualTreeHelper.HitTest est utilisé pour déterminer si le contact est sur l'ellipse. Si oui, le ScatterView 'connecté' est trouvé.

Je ne pense pas que ce soit une solution très élégante. Je ne voudrais pas qu'un élément visuel soit placé là, juste pour détecter si un contact est sur ScatterView.

Y a-t-il de meilleures façons d'accomplir ce genre de «hittesting»?

Merci, Bart

Répondre

1

Eh bien, tout d'abord, j'ai le pressentiment que glisser & goutte va obtenir beaucoup plus facile avec la surface bientôt, alors je ne serais pas passer trop de temps sur une usure de contact additonal élément. Mais traiter cette question plus comme une question générale - Vous ne devez pas nécessairement ajouter un élément visuel juste pour faire le meilleur, mais hittesting sera toujours le meilleur moyen de déterminer s'il y a un élément particulier à un point donné.

L'échantillon dont vous parlez n'a pas simplement ajouté l'ellipse pour le hittesting, il servait également d'arrière-plan du 'pod'. Donc, ils voulaient seulement gérer la chute quand le contact était sur cette ellipse, parce que cette ellipse définissait les limites. Une autre route pourrait être de définir l'arrière-plan de votre scatterview, et faire le plus à l'encontre de ce contrôle. Ensuite, si vous vouliez changer les limites du 'pod' en quelque chose d'autre qu'un rectangle, vous voudriez appliquer un chemin de détourage au scatterview.

+0

J'ai fait le background et ça a marché, mais ce n'est pas élégant. Mais dans le délai pour ce projet, il devait faire. Merci –