我正在为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)使用ListBox
和ItemsPanelTemplate
中的画布并将其绑定到ObservableCollection<Frame>
。在WPF中,将使用DataTemplate中的命令来处理Drag/Drop中涉及的事件。但SL3中没有命令。
b)当用户添加一个新的对象时,我可以创建一个Frame
的实例,然后连接必要的事件。如何在这种情况下应用DataTemplate?
我应该选择哪条路线?如何克服上述的挑战?有什么更好的建议?
感谢
马特,谢谢你的回答。我相信我知道如何去做实际的拖拽。我的问题关于我的方法。我应该选择路线“a”还是“b”。或者也许使用模板化的ListBox并使用VisualTreeHelper附加事件...? – 2010-10-04 14:04:01
如果您有设计时已将物体拖拽到位,Laurent的解决方案非常有趣。在我的情况下,用户自己创建这些对象。那么,如何在添加后应用这些行为? – 2010-10-04 14:06:33