【发布时间】:2012-11-21 11:47:38
【问题描述】:
以前我尝试将对象从LibraryContainer 拖放到ScatterView 上,反之亦然,这很简单,因为LibraryContainer、LibraryStack 和LibraryBar 支持拖放默认情况下的事件。结合 Surface 2.0 SDK 提供的 ShoppingCart 示例中的DragDropScatterView.cs 非常简单。
现在我希望能够将UserControl 拖放到ScatterView4 上,反之亦然,例如:http://goo.gl/zZIdg。
根据我的研究,有一种方法可以做到这一点,可以在这里找到:http://msdn.microsoft.com/en-us/library/ff727736.aspx。但是,这里他们不使用DragDropScatterView.cs,它以不同的方式完成。您有两个 ObservableCollections(一个源和一个目标),ScatterViewItems 和 SurfaceListBox。
在这个例子中我不喜欢的一点是,可以拖动的ScatterViewItems 并没有真正的缩放属性,因为当用户点击ScatterViewItem 时,它会创建一个视觉样式并隐藏ScatterViewItem 当你放下它时,它会更新 ScatterViewItem 的坐标和方向并使其可见。我决定不走这条路,因为我想要一个正常的ScatterViewItem 行为。
我想要做的基本事情是拥有一个Label,在旁边有一个ScatterView,并且能够拖动Label(创建一个视觉光标 - 已经完成)并放下它在ScatterView 上,创建一个与原始Label 具有相同属性的ScatterViewItem。我尝试使用DragDropScatterView.cs 执行此操作,但是当我使用Label 时,我的droppingCursor.Data(在DragDropScatterView.cs)是null,我认为这是因为draggedElement.DataContext(在LabelView.xaml.cs ) 也是null,但是当我有SurfaceListBox 时,这不是null。
我在这里提供了一个代码示例:http://sdrv.ms/VDuHq5。在SurfaceWindow1.xaml 中有TagVisualization 和ScatterView 的容器,LabelView.xaml 在`TagVisualization 内部调用。
如果有人可以帮助我,我将不胜感激。
【问题讨论】:
标签: c# wpf xaml pixelsense