C# 在GridView中的UserControl项上删除项不会触发删除事件(包括示例项目)

C# 在GridView中的UserControl项上删除项不会触发删除事件(包括示例项目),c#,xaml,gridview,drag-and-drop,C#,Xaml,Gridview,Drag And Drop,我希望能够从ListView中拖动一个项,并将其放到表示用户控件列表的GridView上 <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="200" /> <ColumnDefinition Wid

我希望能够从ListView中拖动一个项,并将其放到表示用户控件列表的GridView上

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <ListView 
            ItemsSource="{Binding}"
            VerticalAlignment="Stretch" HorizontalAlignment="Left" 
            CanReorderItems="False" CanDragItems="True"
            DragItemsStarting="DragItemsStarting">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Width="280">
                        <TextBlock Text="{Binding}" />
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <Viewbox Grid.Column="1" Margin="0,20,0,0">
            <GridView x:Name="BoardGrid"
                       Width="600" Height="600">
                <GridView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapGrid MaximumRowsOrColumns="10"/>
                    </ItemsPanelTemplate>
                </GridView.ItemsPanel>
                <GridView.ItemTemplate>
                    <DataTemplate x:Name="GameBoardCellWithPieceDataTemplate">
                        <Grid Background="Green" Width="50" Height="50">
                        </Grid>
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
        </Viewbox>
    </Grid>
在我创建GridItems的代码中,设置AllowDrop属性并将eventhander分配给Drop事件

public MainPage()
        {
            this.InitializeComponent();

            Loaded += MainPage_Loaded;

            this.DataContext = new List<string> { "Drag String 1", "Drag String 2" };
        }

        public void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            for (var row = 0; row < 5; row++)
            {
                for (var column = 0; column < 5; column++)
                {
                    var myUserControl = new MyUserControl { AllowDrop = true };
                    myUserControl.Drop += PieceDropped;

                    BoardGrid.Items.Add(myUserControl);
                }
            }
        }

        private void DragItemsStarting(object sender, DragItemsStartingEventArgs e)
        {
            var dragItem = (string)e.Items.FirstOrDefault();

            if (dragItem == null)
                return;

            e.Data.Properties.Add("dragItem", dragItem);
        }

        private void PieceDropped(object sender, DragEventArgs e)
        {
            object sourceItem;
            e.Data.Properties.TryGetValue("dragItem", out sourceItem);
            if (sourceItem == null)
                return;
            [...]
        }
拖动行为可以正常工作,但是当我将ListView的一项拖放到GridViewItem上时,不会触发拖放事件

当我在GridView本身上设置AllowDrop时,就会触发Drop事件。或者,当我将UserControl包装在GridViewItem中,并在GridViewItem上设置AllowDrop时,也会触发Drop事件,但在此之后,我使用的DataTemplateSelecdtor出现问题

有线索吗

我创建了一个示例项目来演示这个问题