2010-10-04 85 views
1

我正在为Windows Phone 7(Silverlight 3)构建一个小应用程序,它允许用户将对象添加到屏幕并拖动它们。 我的类定义如下:Silverlight - 我应该如何在画布中实现拖动?

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; } 
    } 

我的问题是关于我对如何实现这种方法。我对SilverLight相当陌生(有WPF经验),并且发现了WP3中缺少SL3的东西(比如指挥)。 正如我所看到的那样,我可以:
a)使用ListBoxItemsPanelTemplate中的画布并将其绑定到ObservableCollection<Frame>。在WPF中,将使用DataTemplate中的命令来处理Drag/Drop中涉及的事件。但SL3中没有命令。
b)当用户添加一个新的对象时,我可以创建一个Frame的实例,然后连接必要的事件。如何在这种情况下应用DataTemplate?

我应该选择哪条路线?如何克服上述的挑战?有什么更好的建议?

感谢

回答

2

拿在Silverlight Toolkit看看GestureListerner/GestureReceiver。
源代码附带了一个演示拖动对象的示例。

或者,查看也可以拖动的MultiTouch Behaviour created by Laurent Bugnion

+0

马特,谢谢你的回答。我相信我知道如何去做实际的拖拽。我的问题关于我的方法。我应该选择路线“a”还是“b”。或者也许使用模板化的ListBox并使用VisualTreeHelper附加事件...? – 2010-10-04 14:04:01

+0

如果您有设计时已将物体拖拽到位,Laurent的解决方案非常有趣。在我的情况下,用户自己创建这些对象。那么,如何在添加后应用这些行为? – 2010-10-04 14:06:33