2014-03-31 2 views
1

SelectionMode = "Extended"인 WPF ListBox가 있습니다. Ctrl 키를 사용하여 둘 이상의 항목을 선택하면 listBox.SelectedItems는 항목이 선택된 순서대로 항목을 반환합니다. 원래 순서대로 필요합니다. 항목에는이를 결정하는 방법이 없습니다.WPF ListBox - 선택 순서가 아니라 원래 순서대로 여러 항목을 선택하는 방법

IsSelected 속성이있는 ListBox에서 설정 한 다음 전체 ItemsSource 컬렉션을 반복하는 다른 클래스의 항목을 래핑해야합니까?

아니면 간단한 방법이 있습니까?

+0

당신이 당신의 목록 상자를 결합하는 방법은 다음과 같습니다

여기에 몇 가지 백업 코드는? – user3455395

+0

ur 항목 소스의 속성을 기반으로 선택 항목의 순서를 다시 바꿀 수 있습니다. –

답변

3

LINQ를 사용하여 원래 주문을 다시 적용 할 수 있습니다. 두 단계로 수행 할 수 있습니다. 1. ListBox의 항목을 사전을 사용하여 사전에 투영하십시오 (과부하로 인해 색인이 생성됩니다) 2. 선택한 항목을 색인 된 모음과 일치시킨 다음 색인으로 정렬하십시오. 당신이 itemssource 사용합니까 -

var items = new[] { "A", "B", "C", "D" }; // your original items source 
var selectedItems = new[] { "D", "C" }; // selection in any order 

var indexedItems = items.Select((item, index) => new KeyValuePair<int, string>(index, item)); // indexed items 
selectedItems = selectedItems.OrderBy(t => indexedItems.Single(t2 => t2.Value == t).Key).ToArray(); // selected items in the right order 

MessageBox.Show(selectedItems[0]);