我正在开发一个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 回答
如果您在应用程序中使用拖放功能,则应避免在
ItemTemplate
内直接使用Button
,使用Grid
或其他内容 .现在启用
ListItem
上的点击功能IsItemClickEnabled
属性为True
并在ListView
上使用ItemClick
事件 .