2010-10-04 6 views
1

Je construis une petite application pour Windows Phone 7 (Silverlight 3) qui permet à l'utilisateur d'ajouter des objets à l'écran et de les faire glisser. Ma classe est définie comme suit:Silverlight - Comment dois-je implémenter glisser dans la toile?

public class Frame 
    { 
     public double Height{ get; set; } 
     public double Width { get; set; } 
     public Uri Image { get; set; } 
     public string Details { get; set; } 
     public SolidColorBrush BgColor { get; set; } 
    } 

Ma question concerne mon approche sur la façon de mettre en œuvre. Je suis assez nouveau à SilverLight (j'ai de l'expérience dans WPF) et je découvre les choses dans WPF qui manquent dans SL3 (commander, par exemple). Comme je le vois, je pourrais:
a) utiliser un ListBox avec un canevas dans le ItemsPanelTemplate et le lier à un ObservableCollection<Frame>. Dans WPF utiliserait des commandes dans le DataTemplate pour les événements impliqués dans le glisser/déposer. Mais il n'y a pas de commandes dans SL3.
b) Lorsque l'utilisateur ajoute un nouvel objet, je peux créer une instance de Frame et ensuite câbler les événements nécessaires. Comment puis-je appliquer un DataTemplate dans ce cas?

Quelle route dois-je prendre? Comment surmonter les défis décrits ci-dessus? Une meilleure suggestion?

Merci

Répondre

2

Jetez un oeil à la GestureListerner/GestureReceiver dans le Silverlight Toolkit.
La source est fournie avec un exemple qui montre comment faire glisser un objet.

Vous pouvez aussi regarder le MultiTouch Behaviour created by Laurent Bugnion qui permet également de faire glisser.

+0

Matt, merci pour votre réponse. Je crois que je sais comment faire le dragging réel. Ma question concernant mon approche. Dois-je prendre la route "a" ou "b". Ou peut-être utiliser un ListBox basé sur des modèles et attacher les événements en utilisant VisualTreeHelper ...? –

+0

La solution de Laurent est très intéressante si vous avez déjà déplacé l'objet en cours de conception. Dans mon cas, les utilisateurs créent eux-mêmes ces objets. Alors, comment pourrais-je appliquer le comportement après qu'ils ont été ajoutés? –