2011-07-02 2 views
3

DisplayOrder 속성이있는 일련의 항목이 포함 된 정렬 가능한 ListBox가 응용 프로그램에 있습니다. 항목은 처음에 DisplayOrder에 의해 정렬되지만 사용자는 드래그 앤 드롭하여 순서를 변경할 수 있습니다.WPF ItemsControl에서 항목의 정렬 순서를 유지하는 방법은 무엇입니까?

ListBox의 ItemsSource를 내 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 

} 
관련 문제