首页 文章

在ListView上拖动当定义ItemsTemplate时

提问于
浏览
1

我正在开发一个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

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

    现在启用 ListItem 上的点击功能 IsItemClickEnabled 属性为 True 并在 ListView 上使用 ItemClick 事件 .

相关问题