2010-01-18 2 views
0

xml 문서를 통해 반복되는 다음 방법을 사용하여 TreeView을 만듭니다.wpf treeviewitem

그러나 TreeViewItem을 선택하면 계층 구조의 모든 노드에서 선택한 TreeViewItem 대신 이벤트 트리거가 발생합니다.

예를 들어 노드의 손자를 선택한다고합시다. 손주, 자녀, 부모를 포함한 모든 노드가 동일한 이벤트를 트리거합니다.

다른 말로하면 손자 만 관련 이벤트를 트리거하는 반면 이벤트는 한 번만 호출되어야하지만 선택한 항목의 계층 구조의 모든 노드에 대해 3 번 호출됩니다. ,이 제대로 작동 N

답변

2

감사

TreeViewItem getTreeViewItemWithHeader(XmlNode node) 
{ 
    TreeViewItem tvi = new TreeViewItem(); 
    tvi.Header = node.Name;//hdr; 
    tvi.Tag = node.Attributes["Tag"].Value; 
    tvi.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(tvi_PreviewMouseLeftButtonDown); 
    tvi.Selected += new RoutedEventHandler(tvi_Selected); 

    return tvi; 

} 

당신이 어떤 제안이 있으면 알려 주시기 바랍니다 : 여기에

는 코드입니다. PreviewMouseLeftButtonDown 이벤트는 라우트 된 이벤트입니다 (이 경우 전략은 터널링입니다). 즉, 시각적 트리의 루트가 먼저 이벤트를 가져오고 원래 이벤트를 트리거 한 컨트롤에 도달 할 때까지 작동합니다. MouseLeftButtonDownSelected 이벤트도 라우팅되지만 전략은 버블 링됩니다. 즉, 이벤트를 트리거 한 컨트롤부터 시작하여 이벤트가 시각적 트리 위로 올라갑니다.

라우트 된 이벤트를 계속 보내지 않으려면 으로 전달 된 RoutedEventArgsHandled 속성을 설정하십시오.

+0

감사합니다. Andy. 나는 그것을 시험하고 대답으로 표시 할 것이다. 감사합니다. –

관련 문제