簡體   English   中英

如何在TreeView中僅為一個級別添加上下文菜單

[英]How to add a context menu for only one level in a TreeView

我有一個TreeView,包含許多級別的TreeViewItems

我想在TreeView中只向一個級別的項添加一個上下文菜單。 但是,我的代碼生成一個結果,TreeView中的每個項目都有一個上下文菜單。

這是我的代碼:

//.... foreach item in this level.... 

{
ContextMenu cmDatabase = new ContextMenu();
MenuItem menuItem = new MenuItem();
menuItem.Header = "Close Connection";
Image imgMenuIcon = new Image();
imgMenuIcon.Source = new BitmapImage(new Uri("icon.png"));
menuItem.Icon = imgMenuIcon;
cmDatabase.Items.Add(menuItem);
treeViewItem.ContextMenu = cmDatabase;
}

我還嘗試手動將所有其他TreeViewItems的contextMenu屬性設置為null。 雖然沒有運氣。 有任何想法嗎?

TreeView有一個ContextMenuOpening事件。 根據樹級別將事件處理程序參數eHandled屬性設置為true 這將丟棄上下文菜單。

private void treeView1_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
    e.Handled = <tree level does not require a context menu>;
}

如果您的TreeViewItem有TextBlock,則可以將ContextMenu附加到其上。

 Textblock header = "TreeViewItem Text";
 header.ContextMenu = cmDataBase;
 treeViewItem.Header = header;

另外,對於我回答的其他問題,但是在我點擊“保存”之前刪除了。 :P我將右鍵單擊作為事件(也在標題上)。

 header.MouseRightButtonDown += new MousebuttonEventHandler(rightClickSelection);

 private void rightclickSelection(object sender, MouseButtonEventArgs e) {
      TreeViewItem clickedParent = (sender as TextBlock).Parent as TreeViewItem;
      clickedParent.IsSelected = true;
      clickedParent.UpdateLayout();
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM