2012-08-27 7 views
1

DataContext가있는 목록 상자가 있습니다. 항목을 선택하면 다시 같은 항목을 선택할 수 없습니다. 많은 객체가있을 때 이것은 문제가되지 않지만 때로는 하나의 요소 만있는 목록을 반환하는 사후 서비스가 있습니다. 사용자가 요소를 선택하고 다시 선택하려면 다시 할 수 없습니다. 누구나이 문제를 해결하는 방법을 알고 있습니다.두 번 이상 항목을 선택하십시오.

어쨌든, 감사합니다!

답변

1

Thierry가 물었던 것처럼 사용자가 왜 동일한 항목을 다시 선택하게할까요?

목록 상자를 채우는 항목이 하나 뿐인 경우, 기본적으로 단일 항목 (또는 여러 항목이 반환 된 첫 번째 항목)이 선택되어 있습니까? 그렇다면 목록 상자에서 IsSynchronizedWithCurrentItem 속성을 False로 설정하십시오. 코드를 보지 않고도 더 나은 대답을내는 것은 어렵습니다.

사용자가 항목을 선택할 때마다 실행되는 코드가있는 경우 동일한 코드인지 여부에 관계없이 워크 플로 문제가있을 수 있습니다. 워크 플로우를 변경하기 위해이 영역의 코드를 리팩터링 할 수 있는지 확인하는 것이 좋습니다.

항목을 선택하여 워크 플로를 변경할 수없는 경우 동일한 항목 일지라도 목록 상자의 각 항목을 단추의 컨트롤 템플릿을 텍스트 블록으로 변경해야 할 수 있습니다. 이렇게하면 Command 속성에 바인딩하고 사용자가 클릭 한 항목을 구체적으로 알 수 있습니다.

+0

를 탐색 링크 목록으로 목록 상자를 사용하는 패러다임이다. –

1

ListBox을 탐색과 같은 용도로 사용하는 경우 사용자가 항목을 연속으로 두 번 이상 선택할 수있게하려는 것입니다. 여기 당신이 그것을 할 방법은 다음과 같습니다

'문제는'을 변경하고 같은 항목을 선택하는 것은 변화하지의 ListBox 당신을 알려 단순히입니다. 따라서 메서드가 끝날 때 무효화하고 처음부터 유효하지 않은 상태인지 확인하십시오. 하지 워크 플로우 문제 -

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var lb = (ListBox)sender; 
    if (lb.SelectedIndex == -1) return; 

    //your selection logic here 

    lb.SelectedIndex = -1; 
} 
2

나를 위해 작동이 시도 .. :) WP7에서

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     ListBox listBox = sender as ListBox; 

     if (listBox != null && listBox.SelectedItem != null) 
     { 
      // do work 
     } 

     listBox.SelectedIndex = -1; 
    } 
+0

고마워! 그것은 나를 위해 너무 작동 –

+0

위대한. 귀하가 적절하다고 생각하는대로 대답을 upvote/accept하십시오. –

관련 문제