首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PixelSense Surface2.0-从UserControl拖到ScatterView上,反之亦然

PixelSense Surface2.0-从UserControl拖到ScatterView上,反之亦然
EN

Stack Overflow用户
提问于 2012-11-21 19:47:38
回答 1查看 892关注 0票数 2

以前我试图将一个对象从LibraryContainer拖放到ScatterView上,反之亦然,这很简单,因为LibraryContainerLibraryStackLibraryBar默认都支持拖放事件。再加上Surface2.0SDK提供的ShoppingCart示例中的DragDropScatterView.cs,就非常简单了。

现在,我希望能够将UserControl拖放到ScatterView4上,反之亦然,也就是像这样:http://goo.gl/zZIdg

根据我的研究,有一种方法可以做到这一点,可以在这里找到:http://msdn.microsoft.com/en-us/library/ff727736.aspx。然而,在这里他们没有使用DragDropScatterView.cs,它是以一种不同的方式完成的。您有两个ObservableCollections (源和目标),即ScatterViewItemsSurfaceListBox

在这个例子中,我不喜欢的一件事是,可以拖动的ScatterViewItems实际上没有缩放属性,因为当用户单击ScatterViewItem时,它会创建一个视觉样式并隐藏ScatterViewItem,而当您拖放它时,它会更新该ScatterViewItem的坐标和方向并使其可见。我决定不走这条路,因为我想要一个正常的ScatterViewItem行为。

我想要做的基本事情是,例如,有一个Label,在边上有一个ScatterView,并且能够拖动该Label (创建一个可视光标--已经完成)并将其放在ScatterView上,创建一个与原始ScatterViewItem具有相同属性的Label。我试过用DragDropScatterView.cs这样做,但当我使用Label时,我的droppingCursor.Data (在DragDropScatterView.cs上)是null,我认为这是因为draggedElement.DataContext (在LabelView.xaml.cs上)也是null,但是当我有一个<代码>D34时,这不是null

我在这里提供了一个代码示例:http://sdrv.ms/VDuHq5。在SurfaceWindow1.xaml中有TagVisualizationScatterView的容器,LabelView.xaml`TagVisualization中调用。

如果有人能在这方面帮助我,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 19:54:24

我设法解决了我的问题,下面简要解释一下我是如何做到的:

我找到了this。然后,我将此SurfaceListBox与这些拖放事件一起使用,并将其与DragDropScatterView类组合在一起,这样每次创建新的ScatterViewItem时,我的自定义对象就会有一个普通的ScatterView控件。使用此方法,您还必须创建一个可视光标,即当您从SurfaceListBox中拖动项目时将看到的光标。

令我困惑的是,Serge Calderara (来自MSDN Surface Forum)帮助我解决的问题是,我一直试图将这些拖放事件与Label,甚至是UserControl联系起来,但我看错了方向。在大多数情况下,最好的解决方案是拥有一个容器,在该容器中放置所需的UserControls,并且只将拖放事件与该容器相关联,而不是与每个单独的项相关联。考虑到这一点,将它们放在一起相当容易,我创建了我的UserControls并用ItemTemplateSelector填充了SurfaceListBox (这是我的容器),我对ScatterView使用了相同的选择器(即从容器接收项)。在我的object类中,我只是定义了一个变量来保存我将使用的UserControl类型,并相应地返回DataTemplate

在此基础上,我创建了一个具有两个自定义UserControls的SurfaceListBox,我可以将它们拖放到ScatterView中,然后再拖回。可以在这里找到一个使用MVVM模式的工作示例:http://sdrv.ms/10SjKaH

我希望它能帮助其他人,它也帮助了我。如果您有任何问题或建议,请随时询问/告知。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13492598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档