Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# treeviewitem模板内上下文菜单中的数据绑定_C#_Wpf_Binding_Command_Contextmenu - Fatal编程技术网

C# treeviewitem模板内上下文菜单中的数据绑定

C# treeviewitem模板内上下文菜单中的数据绑定,c#,wpf,binding,command,contextmenu,C#,Wpf,Binding,Command,Contextmenu,我有两个级别的树视图,在第二个级别中,我有一个包含上下文菜单的模板,我试图将上下文菜单所属的TreeView作为CommandParameter传递,但迄今为止没有成功,在我的应用程序中,TreeView有一个HierarchycalDataTemplate,但下面是我的XAML的一个简化示例: <Grid Background="Transparent"> <TreeView> <TreeViewItem Header="blabl

我有两个级别的树视图,在第二个级别中,我有一个包含上下文菜单的模板,我试图将上下文菜单所属的TreeView作为CommandParameter传递,但迄今为止没有成功,在我的应用程序中,TreeView有一个HierarchycalDataTemplate,但下面是我的XAML的一个简化示例:

<Grid
    Background="Transparent">
    <TreeView>
        <TreeViewItem Header="blabla1"/>
        <TreeViewItem Header="blabla2">
            <TreeViewItem Header="innerblalbla">
                <TreeViewItem.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Test" 
                                  Command="{Binding PlacementTarget.DataContext.testCommand,
                       RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ContextMenuu}}}"
                                   CommandParameter=??????/>
                    </ContextMenu>
                </TreeViewItem.ContextMenu>
            </TreeViewItem>
        </TreeViewItem>
    </TreeView>
</Grid>

MenuItem
treevieItem
不在同一个可视树中,这就是FindAncestor在窗口之前无法移动的原因

您可以使用
ContextMenu
PlacementTarget
来获取TreeViewItem,它将自动继承窗口的DataContext

这就是你如何做到的:

<MenuItem Header="Test" 
          Command="{Binding PlacementTarget.DataContext.testCommand,
                            RelativeSource={RelativeSource Mode=FindAncestor, 
                                           AncestorType={x:Type ContextMenu}}}"/>

<MenuItem Header="Test" 
          Command="{Binding PlacementTarget.DataContext.testCommand,
                            RelativeSource={RelativeSource Mode=FindAncestor, 
                                           AncestorType={x:Type ContextMenu}}}"/>