2013-05-10 51 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