2014-12-19 2 views
0

Windows Phone 동작에 서서히 놀랍니다. 그리고 어쩌면 당신은 어떻게 든 나를 도울 수 있습니다.목록보기 및 끌기 항목 Windows Phone 8.1

다른 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 

은 어떻게 든 가능은 윈도우 폰 8.1에서 할인가요?! 내 끌기를 할 수 있을까요? 예, 어떻게 시작해야합니까?!

많은 조언을 주셔서 감사합니다.

답변

1

ReorderMode는 원하지 않습니다. 여기에 두 가지의 ListView 사이에이 작업을 수행하는 몇 가지 기본 기능입니다 :

<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'가 오래된 것입니다. Windows Phone에서 CanReorderItems를 사용할 수 없습니다. 대신 ReorderMode를 사용하십시오. c : \ users \ admin \ documents \ visual 스튜디오 2013 \ Projects \ App1 \ App1 \ MainPage.xaml. 나는 WindowsPhone 8.1 및 VisualStudio2013을 사용 중입니다. – thezapper

+0

흠, 미안 해요 이전 Windows 8.1 프로젝트에서이 코드를 잡아 당겨서 작동한다고 생각했습니다. 나는 그것을 시험해보고 내가 전화로 일할 수있는 것을 봅니다. –