如何使用自定义ListViewItem在ListView中执行拖放操作

时间:2016-10-18 13:13:35

标签: listview uwp datatemplate contenttemplate

我正在开发一个UWP应用程序,我在其中实现了一个包含一些数据表的listview:

<Page
x:Class="ListView_DragDrop.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ListView_DragDrop"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Page.Resources>
    <DataTemplate x:Name="StyleTile1">
        <Grid Height="100" Width="100" Background="Green" AllowDrop="True" CanDrag="True" DragStarting="Grid_DragStarting" Drop="Grid_Drop">
            <TextBlock Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Drop="Grid_Drop"/>
        </Grid>
    </DataTemplate>
    <DataTemplate x:Name="StyleTile2">
        <Grid Height="200" Width="200" Background="Purple" AllowDrop="True" CanDrag="True" DragStarting="Grid_DragStarting" Drop="Grid_Drop">
            <TextBlock Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Drop="Grid_Drop"/>
        </Grid>
    </DataTemplate>
    <DataTemplate x:Name="StyleTile3">
        <Grid Height="50" Width="50" Background="Red" AllowDrop="True" CanDrag="True" DragStarting="Grid_DragStarting" Drop="Grid_Drop">
            <TextBlock Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Drop="Grid_Drop"/>
        </Grid>
    </DataTemplate>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView x:Name="myListView" ReorderMode="Enabled" CanDrag="True" CanDragItems="True" CanReorderItems="True" AllowDrop="True" Drop="Grid_Drop">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid Orientation="Horizontal" Drop="Grid_Drop"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.Items>
            <ListBoxItem Content="Tile1" ContentTemplate="{StaticResource StyleTile1}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile2" ContentTemplate="{StaticResource StyleTile1}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile3" ContentTemplate="{StaticResource StyleTile3}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile4" ContentTemplate="{StaticResource StyleTile2}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile5" ContentTemplate="{StaticResource StyleTile3}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile6" ContentTemplate="{StaticResource StyleTile3}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile7" ContentTemplate="{StaticResource StyleTile2}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile8" ContentTemplate="{StaticResource StyleTile1}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile9" ContentTemplate="{StaticResource StyleTile2}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
            <ListBoxItem Content="Tile10" ContentTemplate="{StaticResource StyleTile1}" CanDrag="True" AllowDrop="True" Height="Auto" Width="Auto" Drop="Grid_Drop"/>
        </ListView.Items>
    </ListView>
</Grid>

我想在其中执行拖放操作。能告诉我如何实现这一目标吗?

0 个答案:

没有答案