그래서 TreeViewItem (parentNode)을 만들고, TreeViewItem을 parentNode TreeViewItem에 추가합니다. 그런 다음 parentNode에 MouseButtonEventHandler를 추가하면 parentNode 내의 모든 TreeViewItem에 MouseButtonEventHandler가 생깁니다. 나는 실수로 MouseButtonHandler를 추가하기 위해 작성된 코드가 있는지 확인하기 위해 디버거를 실행했지만, 그렇지 않은 경우에는 ...TreeViewItem의 항목이 parent의 이벤트 처리기를 상속하는 이유는 무엇입니까?
편집 : 추가 테스트를 수행하고 두 레벨 아래로 내려갑니다. 이벤트 처리기를 자식 및/또는 부모가 아닌 특정 노드에만 격리시키는 방법이 있습니까?
public newClass() {
TreeViewItem parent = new TreeViewItem();
TreeViewItem childOne = new TreeviewItem();
addExpandClickListener(childOne);
TreeViewItem childTwo = new TreeviewItem();
TreeViewItem childThree = new TreeViewItem();
childTwo.Items.Add(childThree);
childOne.Items.Add(childTwo);
parent.Items.Add(childOne);
TreeViewObject.Items.Add(parent);
}
private void addExpandClickListener(TreeViewItem item) { item.MouseLeftButtonUp += new MouseButtonEventHandler(item_MouseClick); }
private void item_MouseClick(object sender, MouseButtonEventArgs e) {
// Define click event as handled
e.Handled = true;
if(sender != e.Source) return;
// Handle click event
TreeViewItem root = (TreeViewItem)sender;
if(root.IsExpanded == true) CollapseRecursive(root);
else root.IsExpanded = true;
//else root.ExpandSubtree();
ViewTree.Items.Refresh();
}
addExpandClickListener 메서드를 호출하는 위치는 어디입니까? 그 코드를주세요 – Dusan
@Dusan addExpandClickListener 메서드를 호출하는 코드가 추가되었습니다. –