【问题标题】:Silverlight - How should I implement drag in canvas?Silverlight - 我应该如何在画布中实现拖动?
【发布时间】:2010-10-04 04:22:43
【问题描述】:

我正在为 Windows Phone 7 (Silverlight 3) 构建一个小应用程序,它允许用户将对象添加到屏幕并拖动它们。 我的班级定义如下:

 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 经验),并且正在找出 SL3 中缺少的 WPF 中的东西(例如命令)。 如我所见,我可以:
a) 在ItemsPanelTemplate 中使用带有画布的ListBox 并将其绑定到ObservableCollection<Frame>。在 WPF 中,将使用 DataTemplate 中的命令来处理拖放中涉及的事件。但是 SL3 中没有命令。
b) 当用户添加一个新对象时,我可以创建一个Frame 的实例,然后连接必要的事件。在这种情况下如何应用 DataTemplate?

我应该走哪条路?如何克服上述挑战?有更好的建议吗?

谢谢

【问题讨论】:

    标签: silverlight silverlight-3.0 windows-phone-7


    【解决方案1】:

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

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

    【讨论】:

    • 马特,感谢您的回答。我相信我知道如何进行实际的拖动。我关于我的方法的问题。我应该走“a”还是“b”路线。或者也许使用模板化的 ListBox 并使用 VisualTreeHelper 附加事件...?
    • Laurent 的解决方案非常有趣,如果您在设计时已经将要拖动的对象放置在适当的位置。在我的例子中,用户自己创建这些对象。那么添加后我将如何应用这些行为呢?
    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    相关资源
    最近更新 更多