そこで、TreeViewItem(parentNode)を作成し、TreeViewItemsをparentNodeTreeViewItemに追加します。次に、MouseButtonEventHandlerをparentNodeに追加すると、parentNode内のすべてのTreeViewItemにMouseButtonEventHandlerが含まれるようになります。デバッガーを実行して、MouseButtonHandlerを追加するために誤って記述されたコードがあるかどうかを確認しましたが、ありません...
編集:私は追加のテストを行いました、そしてそれはさらに2レベル下がっています。イベントハンドラーを特定のノードのみに分離し、その子や親には分離しない方法はありますか?
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();
}