2013-05-10 52 views
1

下面是可以在不同GridView之间拖放GridView元素的XAML代码,但是,此方法仅适用于鼠标输入,仅适用于部分触摸输入。XAML GridView到GridView拖放鼠标和触摸

只有在垂直拖动时,触摸输入元素才能从GridView中“解锁”。在水平拖动时,UI将尝试滚动屏幕​​,而不是仅移动GridView元素。

因此,鼠标完美工作,触摸仅适用于初始垂直拖动,在初始垂直拖动之后,您可以像使用鼠标一样移动元素。这是一个Windows 8应用程序。

<Page.Resources> 
     <DataTemplate x:Key="ItemTemplate1"> 
      <Border Background="#25BDC0"> 
       <Grid Width="230" Height="230" Margin="10"> 
        <TextBlock Text="{Binding Title}" Style="{StaticResource HeaderTextStyle}" 
           HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       </Grid> 
      </Border> 
     </DataTemplate> 
    </Page.Resources> 

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" Width="Auto" Height="Auto"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <GridView Grid.Column="0" ItemTemplate="{StaticResource ItemTemplate1}" 
      ItemsSource="{Binding FirstCollection}" 
      AllowDrop="True" CanDragItems="True" 
      DragItemsStarting="GridViewDragItemsStarting" 
      Drop="GridViewDrop" Margin="10"> 
     </GridView> 
     <GridView Grid.Column="1" ItemTemplate="{StaticResource ItemTemplate1}" 
      ItemsSource="{Binding SecondCollection}" 
      AllowDrop="True" CanDragItems="True" 
      DragItemsStarting="GridViewDragItemsStarting" 
      Drop="GridViewDrop" Margin="10"> 
     </GridView> 
    </Grid> 

回答

1

我在同样的问题绊倒,发现这里的答案:

http://social.msdn.microsoft.com/Forums/windowsapps/en-US/7fcf8bb8-16e5-4be8-afd3-a21e565657d8/drag-and-drop-gridview-items-and-disabled-scrollbar

看来,用一个GridView你不能水平开始拖动,你必须这样做垂直,而且与ListView完全相反。

所以,如果你想拖动'n水平放置项目,你必须使用ListView。 (按照MS指南http://msdn.microsoft.com/en-us/library/windows/apps/hh465299.aspx推荐)

Regards