0

我使用以下代码片段在视图模型中获取 DataGrid 的 ContextMenu 点击

代码片段[XAML]

<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding GDCSource}" x:Name="dataGrid">
<DataGrid.ContextMenu>
<ContextMenu >
    <ContextMenu.Items>
        <MenuItem Header="Export To Excel" Command="{Binding ExportCommand}" CommandParameter="{Binding ElementName=dataGrid}"/>  
    </ContextMenu.Items>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>

代码片段[C#]

private BaseCommand exportcommand;

    public BaseCommand ExportCommand
    {
        get
        {
            if (exportcommand == null)
                exportcommand = new BaseCommand(ExportCommandExcecuted);

            return exportcommand;
        }
    }

    public void ExportCommandExcecuted(object param)
    {
        var grid = param as GridDataControl;
    }

但我无法将 Command 参数作为 DataGrid。您能否对此进行研究并提供建议以在 ViewModel 中实现此 dataGrid。提前致谢

4

1 回答 1

0

我不确定我是否应该告诉你如何做到这一点,因为你破坏了 MVVM,如果你本质上是这样做的,我无法弄清楚你想要这个功能的原因。

如果您不使用 MVVM,那么您可以尝试使用MenuItem诸如

<MenuItem Command="{Binding ExportCommand}"
          CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget}"
          Header="Export To Excel" />

如果您使用的是 MVVM,

只是不要在 VM 中引用 UI 元素。您ItemSource在 VM 中获得了集合。提出一个简单的问题ICommand,您需要的所有数据都可用,而无需访问DataGridVM。

于 2013-06-18T12:22:52.517 回答