0

ObservableCollection にバインドされた ListView があります。このリスト ビューのアイテムは並べ替えることができます。

ただし、アイテムがいつ再注文されたかを検出する方法がわかりません。関連する ListView イベントが見つかりません。また、アイテムがドラッグされたときに ObservableCollection の CollectionChanged イベントが 2 回発生するため (「追加」イベントと「削除」イベント)、アイテムが実際に UI で移動されたのか、それともプログラムで追加したのかを判断することはできないと思います。新商品。

アイテムがいつ再注文されたかを検出する方法はありますか?

前もって感謝します。

4

2 に答える 2

0

ドラッグ アンド ドロップを変更する必要があります。ItemsControl.DataContext が ObservableCollection であるかどうかを確認し、.Remove の代わりに .Move を呼び出してから .Add を呼び出すかどうかを確認します。このようにして、基になるコレクションが正しいイベントを取得し、それを簡単に処理できます。

あなたはドラッグを自分で実装できないと言いましたが、それは可能です。同じリストと他のリストの間でドラッグ/ドロップを実装する ListView の例を次に示します。1 つのオプションは、ここから開始して、代わりに .Move を呼び出すように変更することです。また、装飾品を描いてきれいに見せることができるという利点もあります。

データ バインドされた ItemsControls 間で項目をドラッグ アンド ドロップする方法

これを実装する必要を避けたいと思うかもしれませんが、他の唯一のオプションは、作成されたデフォルトのビューに依存するのではなく、コレクションの CollectionView を公開することだと思います。ただし、追加/削除ではなく動きを検出できるかどうかはわかりません。

于 2012-11-13T08:55:04.593 に答える
-1

リストを並べ替えるためのイベントがあるようです: DragItemsStarting と Drop。ただし、Drop イベントは現在、ObservableVector<object>

http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/431cb3b4-0643-4a0e-8f1a-fc6e1e726ffb

于 2012-11-14T21:23:47.413 に答える