Wpf 将树视图项的详细信息绑定到上下文菜单
我有一个上下文菜单,它出现在树视图项的右键单击上。我现在想做的是将关于TreeView项目的一些细节传递到上下文菜单中 我将如何从这里开始: XAMLWpf 将树视图项的详细信息绑定到上下文菜单,wpf,xaml,treeview,Wpf,Xaml,Treeview,我有一个上下文菜单,它出现在树视图项的右键单击上。我现在想做的是将关于TreeView项目的一些细节传递到上下文菜单中 我将如何从这里开始: XAML 您需要做的第一件事是将MenuItem.Header属性绑定到设置到ContextMenu.DataContext中的对象: <ContextMenu DataContext="{Binding PlacementTarget.Tag, RelativeSource={ RelativeSource Self}}">
您需要做的第一件事是将
MenuItem.Header
属性绑定到设置到ContextMenu.DataContext
中的对象:
<ContextMenu DataContext="{Binding PlacementTarget.Tag, RelativeSource={
RelativeSource Self}}">
<MenuItem Name="dataItem1" Header="{Binding Property1}"></MenuItem>
<MenuItem Name="dataItem2" Header="{Binding Property2}"></MenuItem>
<Separator/>
<MenuItem Name="taskItem" Header="Tasks" Click="TaskItem_OnClick"></MenuItem>
</ContextMenu>
这是什么,我听到你问。查看MSDN上的页面,我们发现:
获取或设置ui元素
,该元素在打开上下文菜单时相对于该元素定位
在简单的英语中,这只是指应用了ContextMenu
的UI元素。现在,Tag
属性只是一个类型为object
的自由属性,我们可以将任何内容放入其中。在您的情况下,我们将把ContextMenu.DataContext
值放在其中,因为我们不能直接设置它,因为ContextMenu
不是常规UI可视化树的一部分:
现在,您没有显示将ContextMenu
应用于TreeViewItem
的代码,但在同一位置,您需要将标记
属性设置为要设置为ContextMenu.DataContext
值的对象。因此,我们在这里传递它,并在上下文菜单中取出它,如代码示例所示
有关更多信息,请查看我对堆栈溢出的回答和这里的问题
private void TreeControl_OnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
TreeViewItem treeViewItem = VisualUpwardSearch(e.OriginalSource as DependencyObject);
if (treeViewItem != null)
{
treeViewItem.IsSelected = true;
treeViewItem.Focus();
e.Handled = true;
}
}
<ContextMenu DataContext="{Binding PlacementTarget.Tag, RelativeSource={
RelativeSource Self}}">
<MenuItem Name="dataItem1" Header="{Binding Property1}"></MenuItem>
<MenuItem Name="dataItem2" Header="{Binding Property2}"></MenuItem>
<Separator/>
<MenuItem Name="taskItem" Header="Tasks" Click="TaskItem_OnClick"></MenuItem>
</ContextMenu>