2011-08-04 4 views
15

내 WPF 응용 프로그램에서 ListBox SelectionChanged 이벤트를 처리하고 잘 실행됩니다.WPF : ListBox 항목을 클릭하면 어떻게 처리됩니까?

이제는 이미 선택된 항목에 대해서도 클릭 이벤트를 처리해야합니다. MouseDown을 시도했지만 작동하지 않습니다. 항목에 ListBox 클릭을 처리하려면 어떻게해야합니까?

감사합니다.

+0

 EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler)); private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e) { } 

이 도움이되는지 알려주세요

외에도 아래 미리보기 마우스에서, 당신은 EventManager.RegisterClassHandler을 사용할 수 있습니다 ... ... : http://stackoverflow.com/a/821609/58768 –

+0

@modosansreves 해당 질문에 대한 질문입니다. 클릭은 특별합니다. 분명히 납치되어 SelectionChanged로 바뀌 었습니다. DoubleClick은 ... –

+0

다음은 비슷한 질문입니다. 그의 대답은 모든 접근법에 대한 좋은 요약이다. http://stackoverflow.com/q/1271375/1175496 –

답변

6

아마도 PreviewMouseDown 이벤트를 시도하십시오. MouseDown 이벤트는 삼키고 SelectionChanged 이벤트로 변환됩니다.

PreviewMouseDownSelectionChanged 전에 발생한다는 단점 만 있습니다.

29

그냥 PreviewMouseDown 이벤트를 처리 :

private void listBox_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
{ 
    var item = ItemsControl.ContainerFromElement(listBox, e.OriginalSource as DependencyObject) as ListBoxItem; 
    if (item != null) 
    { 
     // ListBox item clicked - do some cool things here 
    } 
} 
3

목록 상자가 내부적으로 선택이 변경 수행 할 수 아래로 마우스를 사용합니다. 따라서 미리보기 마우스 다운 이벤트를 사용할 수 있습니다. 이 여기에 대한 답변

관련 문제