Wpf 绑定到上下文菜单(模板化网格)的父级
在WPF.NET4应用程序中,存在一种主详细信息情况,其中datagrid具有行,这些行可以具有在具有内部datagrid的RowDetailsTemplate中找到的详细信息 RowDetailsTemplate中有一个网格,用于保存具有上下文菜单的子详细信息。发现的问题是,在绑定某个details的MenuItem的CommandTarget时,我无法将该模板生成的details datagrid作为目标。下面的绑定最终得到的是主数据网格,而不是包含详细信息/上下文菜单的数据网格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
<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>
这样,无论何时单击某个项目(或单击鼠标右键),它都会被选中,然后您只需将该项目作为命令参数发送,就可以获得所需的项目
希望这有帮助