定义ItemsTemplate时,在ListView上拖动

时间:2017-11-08 05:00:04

标签: c# xaml listview uwp drag-and-drop

我正在开发一个UWP应用程序,在一个场景中我必须在ListView上添加拖放功能。但是,当定义ItemsTemplate时,DragItemsStarting事件不会触发。

在一种情况下,当我通过选择其边框对ListViewItem执行拖动操作时,它运行良好,但是当我执行拖动项目时它不起作用。

Here is the Image for drag operation on items border:

以下是XAML代码:

 <ListView Grid.Row="3"
              ScrollViewer.IsScrollInertiaEnabled="True"
              ScrollViewer.VerticalScrollBarVisibility="Auto"
              ScrollViewer.VerticalScrollMode="Enabled"
              CanDragItems="True"
              CanReorderItems="True"
              ReorderMode="Enabled"
              AllowDrop="True"
              SelectionMode="Single"
              VerticalAlignment="Stretch"
              HorizontalAlignment="Stretch"
              DragItemsStarting="{x:Bind VM.DragItemsStarting, Mode=OneWay}"
              DragOver="{x:Bind VM.DragOver, Mode=OneWay}"
              Drop="{x:Bind VM.DragDrop, Mode=OneWay}"
              ItemsSource="{x:Bind ItemSource, Mode=OneWay}">

   <ListView.ItemTemplate>
            <DataTemplate x:DataType="model:Model">
                <Button HorizontalAlignment="Stretch"
                        HorizontalContentAlignment="Stretch"
                        Command="{Binding DataContext.PageCommand, ElementName=pageMain}">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="10" />
                        </Grid.RowDefinitions>
                        <TextBlock Text="{x:Bind ShowName,Mode=OneWay}"
                                   VerticalAlignment="Center"
                                   HorizontalAlignment="Center"
                                   Foreground="Black"
                                   TextWrapping="WrapWholeWords"
                                   Margin="3" />
                        <ProgressBar Grid.Row="1"
                                     Margin="0"
                                     Value="25"
                                     Height="8"
                                     VerticalAlignment="Bottom"
                                     Foreground="Green" />
                    </Grid>
                </Button>
            </DataTemplate>
        </ListView.ItemTemplate>

有什么办法可以在完整的ListViewItem上执行拖动操作吗?

1 个答案:

答案 0 :(得分:0)

如果您在应用程序中使用拖放功能,请使用Button或其他内容,则应避免在ItemTemplate内直接使用Grid

现在,将ListItem设置IsItemClickEnabled媒体资源上的点击功能设为True,并在ItemClick上使用ListView事件。