2014-12-19 129 views
0

我正在使用Windows Phone行为。也许你能以某种方式帮助我。列表视图和拖动项目Windows Phone 8.1

我想要一个listview,我可以从中将项目拖到另一个Gridview。

到目前为止,我通过设置ReorderMode =“Enabled”来启用拖动。这样做有一些缺点。

1. I'm not able to scroll in my listview anymore 
2. I can't select items anymore 
3. I don't want the items to be reordered 

我想有:

1. When holding an item, I want to drag this to another gridview 
2. I want still be able to scroll in the listview 
3. I still want to be able to select items 

这个现象的原因可能要在Windows Phone 8.1做?我可以自己拖动吗?是的,我该如何开始?!

任何非常感谢指教

回答

1

ReorderMode并不是要你在这种情况下想要的。下面是一些基本的功能两个列表视图之间做到这一点:

<StackPanel Orientation="Horizontal" Width="800"> 
    <ListView x:Name="ListView1" HorizontalAlignment="Left" DragItemsStarting="ListView_DragItemsStarting" AllowDrop="True" CanDragItems="True" CanReorderItems="True" Drop="ListView_Drop"/> 
    <ListView x:Name="ListView2" HorizontalAlignment="Right" DragItemsStarting="ListView_DragItemsStarting" AllowDrop="True" CanDragItems="True" CanReorderItems="True" Drop="ListView_Drop"/> 
</StackPanel> 
ObservableCollection<string> AlphabetList; 
ObservableCollection<string> NumberList; 
protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    AlphabetList = new ObservableCollection<string>(); 
    AlphabetList.Add("A"); 
    AlphabetList.Add("B"); 
    AlphabetList.Add("C"); 
    AlphabetList.Add("D"); 
    AlphabetList.Add("E"); 
    AlphabetList.Add("F"); 
    AlphabetList.Add("G"); 
    AlphabetList.Add("H"); 
    AlphabetList.Add("I"); 
    AlphabetList.Add("J"); 
    ListView1.ItemsSource = AlphabetList; 

    NumberList = new ObservableCollection<string>(); 
    NumberList.Add("0"); 
    NumberList.Add("1"); 
    NumberList.Add("2"); 
    NumberList.Add("3"); 
    NumberList.Add("4"); 
    NumberList.Add("5"); 
    NumberList.Add("6"); 
    NumberList.Add("7"); 
    NumberList.Add("8"); 
    NumberList.Add("9"); 
    ListView2.ItemsSource = NumberList; 
} 

IList<object> DraggedItems; 

private void ListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e) 
{ 
    DraggedItems = e.Items; 
} 

private void ListView_Drop(object sender, DragEventArgs e) 
{ 
    ListView ThisListView = sender as ListView; 
    ObservableCollection<string> AddingOC = (ThisListView.Name == "ListView1" ? AlphabetList :NumberList); 
    ObservableCollection<string> RemovingOC = (ThisListView.Name == "ListView1" ? NumberList : AlphabetList); 

    if (AddingOC.Contains(DraggedItems[0])) return; 
    foreach (string O in DraggedItems) 
    { 
     RemovingOC.Remove(O); 
     AddingOC.Add(O); 
    } 
} 
+0

非常感谢您effirts。不幸的是它不工作。我收到一条错误消息:'CanReorderItems'已过时:CanReorderItems在Windows Phone上不可用。改用ReorderMode。 c:\ users \ admin \ documents \ visual studio 2013 \ Projects \ App1 \ App1 \ MainPage.xaml。我在WindowsPhone 8.1和VisualStudio2013上 – thezapper

+0

对不起,我从一个较旧的Windows 8.1项目中抽出了这段代码,并认为它会起作用。我会测试一下,看看我可以在手机上工作。 –

相关问题