2010-10-04 88 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