Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Wpf 绑定到上下文菜单(模板化网格)的父级_Wpf_Xaml_Binding_.net 4.0_Datagrid - Fatal编程技术网

Wpf 绑定到上下文菜单(模板化网格)的父级

Wpf 绑定到上下文菜单(模板化网格)的父级,wpf,xaml,binding,.net-4.0,datagrid,Wpf,Xaml,Binding,.net 4.0,Datagrid,在WPF.NET4应用程序中,存在一种主详细信息情况,其中datagrid具有行,这些行可以具有在具有内部datagrid的RowDetailsTemplate中找到的详细信息 RowDetailsTemplate中有一个网格,用于保存具有上下文菜单的子详细信息。发现的问题是,在绑定某个details的MenuItem的CommandTarget时,我无法将该模板生成的details datagrid作为目标。下面的绑定最终得到的是主数据网格,而不是包含详细信息/上下文菜单的数据网格 <D

在WPF.NET4应用程序中,存在一种主详细信息情况,其中datagrid具有行,这些行可以具有在具有内部datagrid的RowDetailsTemplate中找到的详细信息

RowDetailsTemplate中有一个网格,用于保存具有上下文菜单的子详细信息。发现的问题是,在绑定某个details的MenuItem的CommandTarget时,我无法将该模板生成的details datagrid作为目标。下面的绑定最终得到的是主数据网格,而不是包含详细信息/上下文菜单的数据网格

<DataGrid x:Name="dgEditScript" ItemsSource="{Binding CurrentScript}">

<DataGrid.CommandBindings>
    <CommandBinding Command="commands:ScriptingCommands.SetChecked"
                    Executed="CheckAllAfter" />
</DataGrid.CommandBindings>

<DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <DataGrid ItemsSource="{Binding SubCommands}">
            <DataGrid.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Check All From Selected"
                              Command="commands:ScriptingCommands.SetChecked"
                              CommandTarget="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}">
                        <MenuItem.Icon>
                            <Image Source="Images/checkboxes.png" />
                        </MenuItem.Icon>
                    </MenuItem>
                </ContextMenu>
            </DataGrid.ContextMenu>
        </DataGrid>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>

使用上述Realtive source绑定时的问题是,它为我提供了dgEditScript网格(顶级),而不是上下文菜单的父级,即启动上下文菜单的未命名数据网格


如何在绑定中获取子网格;要以上下文菜单的父项为目标?

如果我正确理解您的问题,您有一组项目,并且希望上下文菜单附加到所选项目(当您右键单击它时…)

下面是我正在使用的一些类似代码:

<ListBox x:Name="name_here"  
      ItemsSource="{Binding source_collection_name}"
      SelectedItem="{Binding property_name_on_VM, UpdateSourceTrigger=PropertyChanged}"
       >
    <ListBox.ContextMenu>
        <ContextMenu>
            <MenuItem Header ="Edit Item"   Command="{Binding EditItem_Command}" 
                      CommandParameter="{Binding property_name_on_VM}"
            />
            <MenuItem Header ="Delete Item" Command="{Binding DeleteItem_Command}" 
                       CommandParameter="{Binding property_name_on_VM}"
            />
        </ContextMenu>
    </ListBox.ContextMenu>
</ListBox>

这样,无论何时单击某个项目(或单击鼠标右键),它都会被选中,然后您只需将该项目作为命令参数发送,就可以获得所需的项目

希望这有帮助