2013-01-06 56 views
0

有没有什么好的例子/教程如何实现在窗口内拖放8 C#列表(列表视图,列表框...)在那里?拖放列表,Windows 8应用程序?

我想要的是一个可编辑的“Iphone-list”体验,我可以轻松地重新排列列表中的项目。但我主要找到WinJS的例子,我想有一个C#的例子赢得8

回答

0

首先,您必须启用AllowDragDrop属性。

然后写3个事件:

private void myList_ItemDrag(object sender, ItemDragEventArgs e) 
    { 
     DoDragDrop(e.Item, DragDropEffects.Link); 
    } 

    private void myList_DragEnter(object sender, DragEventArgs e) 
    { 
     e.Effect = DragDropEffects.Link; 
    } 

    private void myList_DragDrop(object sender, DragEventArgs e) 
    { 
     // do whatever you need to reorder the list. 
    } 

要获得放置项目的索引:

Point cp = myList.PointToClient(new Point(e.X, e.Y)); 
ListViewItem dragToItem = myList.GetItemAt(cp.X, cp.Y); 
int dropIndex = dragToItem.Index; 
+0

首先,我没有找到一个AllowDragDrop属性,在我的情况下,ListBox。你有任何特别的组件吗?其次,为了获得平滑的体验(拖拽和滚动,显示对象将落在哪里等等),将会有很多工作要做。没有任何win8组件,框架或类似的东西? – Cinaird

+0

这是ListView控件的例子。 –

+1

好的,我可以看到listview和listbox都没有ItemDrag,dragDrop或AllowDragDrop。我错过了什么吗? – Cinaird

0

如果您需要拖放到一个ListView或GridView中,有在DataTemplate中的Drop事件火实际的项目,而不是整个列表。然后你可以知道它放在哪个项目上。