3

ドラッグ アンド ドロップ ジェスチャを使用して、ListView 内の項目を並べ替えようとしました。

In the "Drop" method I don't know how to get a reference to the "dropped" element, I only get reference to the "target drop" element.

下記参照:

private void Grid_Drop(object sender, DragEventArgs e)
        {
            ReorderItem draggedElement = (e.OriginalSource as Grid).DataContext as ReorderItem;
            ReorderItem targetElement = ((Grid)sender).DataContext as ReorderItem;

            Debug.WriteLine("Dragged element is:" + draggedElement.Index);
            Debug.WriteLine("Drag target element is:" + targetElement.Index);
        }

並べ替えは 0 ~ 1 インデックスです。コンソールのインデックスは両方とも 1 :(

<ListView ItemsSource="{Binding Items}" CanReorderItems="True">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid Background="{Binding Color}"
                              HorizontalAlignment="Stretch"
                              VerticalAlignment="Stretch"
                              AllowDrop="True"
                              Drop="Grid_Drop">
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
4

2 に答える 2

5

誰かがすでにそれを行っているのに、なぜ車輪を再発明するのでしょうか。https://github.com/punker76/gong-wpf-dragdropをチェックして ください。NuGet パッケージとしても利用できます。

ドキュメントではListBoxを使用していますが、私はListView

于 2016-09-06T13:18:38.470 に答える
4

これがDragEventArgs.Data目的です。DataPackageイベントでドラッグされたアイテムの を作成しますDragItemsStarting。はDataPackage2 つのイベント間で渡されます。

編集:

これにより、2 つの 間でドラッグできますListViewここのドキュメントによると:

「ユーザーがドラッグ アンド ドロップ操作を使用して項目を並べ替えられるようにするには、CanReorderItemsAllowDropプロパティの両方を true に設定する必要があります。」

これで問題が解決するはずです。

于 2014-03-14T16:25:11.430 に答える