2011-07-02 11 views
3

DisplayOrderプロパティを持つ一連の項目を含むソート可能なListBoxがアプリケーションにあります。アイテムは最初DisplayOrderでソートされますが、ユーザーはドラッグアンドドロップで並べ替えることができます。WPF ItemsControlでアイテムのソート順を保持するにはどうすればよいですか?

ListBoxのItemsSourceをMy SortDescriptionでCollectionViewSourceに設定することで、最初の並べ替え順序を設定しました。

ドラッグアンドドロップ操作が行われた後、影響を受けるアイテムのDisplayOrderプロパティを更新するにはどうすればよいですか?

これは私のドロップ操作のイベントハンドラで何かするのですか、それともListBoxのインデックスをDisplayOrderプロパティにバインドする方法がありますか?

答えて

0

xamlファイルのコードの中でこれを処理しました。私はイベントアクションをビューモデルに渡し、コード内でアクションを実行して、新しい順序でUIを更新しました。

ビュー

ChangedEvent (button click/drag drop/whatever) 
{ 
    ViewModel.MoveItemToNewLocation(); 

} 

ビューモデル

MoveItemToNewLocation() 
{ 
    int newLocation = myList.IndexOf(SelectedItem); 
    int oldLocation = SelectedItem.DisplayOrder; 
    UpdateDisplayOrders(oldLocation, newLocation); 
} 

private void UpdateDisplayOrders(int oldlocation, int newlocation, object myitem) 
{ 
    // Do move logic here 

} 
関連する問題