我在一个UWP应用程序上工作,在那里我将一些项目从网格拖到包含ListView的StackPanel中.我的目标是在ListView中显示类别,并通过将拖动的网格项拖到指定的类别来对它们进行重新分类.
我遇到的问题是,当我将网格项拖到ListView项上时,拖动事件(DragLeave等)不会触发,我不确定原因.一般来说,似乎无论我将什么事件与ListViewItems相关联,它们都不会触发.我已经启用了CanDrag/CanDrop,事件确实会在StackPanel上触发,但不会触发项目本身.
我try 将事件放入DataTemplate、StackPanel本身,try 使用XAML行为,并try 使用其他事件,如PointerEntered.我也曾try 将其添加到ListViewPresenter中,但也没有成功.
我可以确认ListViewItems正在按预期生成,并且我设置的所有事件只有一行代码将方法的名称打印到Debug输出(这在过go 对我很有效)-Debug.Wite("方法名称激发");-当项被拖动到ListViewItems上时,它不会打印到输出.
<StackPanel
x:Name="dropAreas"
Grid.Row="1"
Grid.RowSpan="3"
Margin="40,40,40,40">
<ListView
x:Name="dropAreasList"
HorizontalAlignment="Stretch"
x:FieldModifier="public"
AllowDrop="True"
ItemsSource="{x:Bind areasForFilter, Mode=OneWay}"
SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock
x:Name="dropAreaItemText"
Padding="7,5,7,5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
CanDrag="True"
DragEnter="SwapArea_Item_DragEnter"
DragLeave="SwapArea_Item_DragLeave"
DragOver="SwapArea_Item_DragOver"
FontSize="16"
PointerEntered="SwapArea_Item_PE"
PointerExited="SwapArea_Item_Px"
Text="{Binding}"
TextWrapping="Wrap" />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Margin" Value="10,2,10,2" />
<Setter Property="AllowDrop" Value="True" />
<Setter Property="Background" Value="#FFF5F18E" />
<Setter Property="CornerRadius" Value="10,10,10,10" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<ListViewItemPresenter
DragEnter="SwapArea_Item_DragEnter"
DragLeave="SwapArea_Item_DragLeave"
DragOver="SwapArea_Item_DragOver" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</StackPanel>