0
我有一個小問題,指定的ContextMenu特定樹型視圖:TreeViewItems和文本菜單
<TreeView x:Name="_filesTree">
<TreeView.Resources>
<ContextMenu x:Key="_rootContextMenu">
<MenuItem Header="Add..." Click="MenuItem_Click" />
</ContextMenu>
</TreeView.Resources>
<TreeViewItem Header="Persistent" ContextMenu="{DynamicResource _rootContextMenu}"/>
<TreeViewItem Header="Temporary" ContextMenu="{DynamicResource _rootContextMenu}" />
</TreeView>
Click處理程序:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
Point menuClickPoint = ((sender as FrameworkElement).Parent as ContextMenu).TranslatePoint(new Point(0, 0), _filesTree);
DependencyObject obj = _filesTree.InputHitTest(menuClickPoint) as DependencyObject;
while (obj != null && !(obj is TreeViewItem))
{
obj = VisualTreeHelper.GetParent(obj);
}
(obj as TreeViewItem).Items.Add("(new)");
}
在我* MenuItem_Click *事件處理程序,我加入新的TreeViewItems被點擊的項目,什麼工作正常。但是在添加新的(例如「Persistent」子樹)後,右鍵單擊這個新子項再次打開上下文菜單。這是我不需要的東西,因爲我需要這些新添加的項目的另一個上下文菜單(使用刪除選項)。 如何創建上下文菜單僅在右鍵單擊根項目(TextBlock)時打開,而不在子樹內打開?
謝謝
發佈MenuItem_Click代碼 – makc
問題編輯... –
它看起來像所有的項目將具有相同的ContextMenu。我建議使用HierarchicalDataTemplate來更改哪些項目使用哪些上下文菜單。 – Kcvin