2010-08-09 1 views
3

TreeView 기반 컨트롤을 개발 중이며 두 번 클릭 이벤트가 계속 내 TreeViewItem 노드를 버블 링합니다.처리 된 RoutedEvent가 계속 트리를 버블 링합니다.

목표는 두 번 클릭하면 TreeViewItem이 확장되거나 축소되도록하는 것입니다.

MouseDoubleClick 이벤트에 대한 이벤트 처리기를 각 TreeViewItem에 적용하는 스타일이 있습니다.

다음은 이벤트


private void TreeViewItemDoubleClicked(object sender, RoutedEventArgs e) 
{ 
    // Get the specific tree view item that was double clicked 
    TreeViewItem treeViewItem = sender as TreeViewItem; 

    // not null? 
    if(null != treeViewItem) 
    { 
     // Switch expanded state 
     if(true == treeViewItem.IsExpanded) 
     { 
      treeViewItem.IsExpanded = false; 
     } 
     else 
     { 
      treeViewItem.IsExpanded = true; 
     } 

     // Set event handled 
     e.Handled = true; // [1] 
    } 
} 

이 아이 마우스를 더블 클릭 그러나 경우, 이벤트는 전체 지점 붕괴의 원인이 트리를 거품 최상위 TreeViewItem 잘 동작을 처리하는 코드입니다. 왜 행사가 계속 거품을 일으키고 있습니까? 언급 한 바와 같이 [1] 나는 이벤트를 처리 된 것으로 설정합니다.

답변

1

증오 여기에 내 자신의 질문에 대답하지만, 내가 궁극적으로 사용하도록 제공된 솔루션입니다.

WPF TreeView, get TreeViewItem in PreviewMouseDown event : 이벤트가 처리되는 경우

에 관계없이 MouseDoubleClick이 (아이까지의 루트) 분기의 각 TreeViewItem에 대해 발생되는 지정된 몇 가지 소스에서 나오는 후에 나는이 질문의 답을 활용

마우스 이벤트 아래에있는 TreeViewItem을 가져옵니다. 현재 보낸 사람이 마우스 이벤트의 TreeViewItem과 동일한 경우 필요에 따라 확장/축소합니다. 그렇지 않으면, 나는 그 사건을 무시하고 아무것도하지 않는다.

-2

붕괴/신축력 전에 Handled을 설정해보십시오 ...

+0

의견을 보내 주셔서 감사합니다. 나는 그것을 시도했고 그 행동은 똑같다. 그 사건은 계속해서 거품을 일으킨다. – Matthew