2

そこで、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();
}
4

1 に答える 1

2

parentNodeの領域には、子の領域が含まれます。重なり合う長方形について考えてみてください。クリックだけでテキスト部分を機能させる場合は、独自のDataTemplateを指定するか、ビジュアルツリーを使用してヘッダーを見つけてクリックを適用する必要があります。

于 2012-07-05T18:32:22.077 に答える