1

这是 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>
4

1 回答 1

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 完全相反。

因此,如果您想水平拖放项目,则必须使用 ListView。(按照 MS 指南http://msdn.microsoft.com/en-us/library/windows/apps/hh465299.aspx中的建议)

问候

于 2013-06-27T08:12:06.003 回答