在 WPF .Net 4 应用程序中有一个主详细信息情况,其中数据网格具有可以具有在具有内部数据网格的 RowDetailsTemplate 中找到的详细信息的行。
RowDetailsTemplate 中有一个网格,用于保存具有上下文菜单的子详细信息。发现的问题是,当绑定详细信息的 MenuItem 之一的 CommandTarget 时,我无法将模板生成的详细信息数据网格作为目标。下面的绑定最终得到主数据网格,而不是包含详细信息/上下文菜单的包含数据网格。
<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 源绑定时的问题,它给了我 dgEditScript 网格(顶级)而不是上下文菜单的父级,即启动上下文菜单的未命名的持有 DataGrid。
如何在绑定中获取子网格;以上下文菜单的父级为目标?