[英]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
事件。 根據樹級別將事件處理程序參數e
的Handled
屬性設置為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.