从CollectionViewSource / DataGrid复制到剪贴板

时间:2016-07-18 07:26:18

标签: c# .net wpf

我需要将点击单独按钮的数据复制到剪贴板,该剪贴板正在屏幕上的DataGrid中显示。我在互联网上发现了很多代码,但它在viewmodel中引用了DataGrid控件。我不想发送对viewmodel的控件引用,因为它使代码非单元可测试并违反MVVM。

我使用collectionviewsource绑定数据。有没有办法在不使用DataGrid对象的情况下将其复制到剪贴板?

请建议。

public void CopyCommand(object sender)
    {
        if (sender == null)
        {
            return;
        }

        var grid = sender as System.Windows.Controls.DataGrid;
        if (grid == null)
        {
            return;
        }

        grid.SelectionMode = System.Windows.Controls.DataGridSelectionMode.Extended;

        grid.SelectAllCells();
        grid.ClipboardCopyMode = System.Windows.Controls.DataGridClipboardCopyMode.IncludeHeader;
        System.Windows.Input.ApplicationCommands.Copy.Execute(null, grid);
        grid.UnselectAllCells();
    }

0 个答案:

没有答案