ctrl + c或shift + c没有复制反应

时间:2016-07-12 16:14:00

标签: c# wpf xceed

通过定义的手势尝试执行方法XceedCopyCommandExecute,但此方法从未被调用过。当使用这个手势时,它只是用列标题复制整行。尽量避免使用不包含标题列进行复制。知道怎么解决吗?

提前感谢任何建议

    public static RoutedCommand XceedCopyCommand = new RoutedCommand();     
    public CommandBinding XceedCopyCommandBinding { get { return xceedCopyCommandBinding; } }
    private CommandBinding xceedCopyCommandBinding;

    public BaseView()
    {
        XceedCopyCommand.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Control | ModifierKeys.Shift));
        xceedCopyCommandBinding = new CommandBinding(XceedCopyCommand, XceedCopyCommandExecuted);
    }

    private void XceedCopyCommandExecuted(object sender, ExecutedRoutedEventArgs e)
    {
        if (sender == null || !(sender is Xceed.Wpf.DataGrid.DataGridControl)) return;

        var dataGrid = sender as Xceed.Wpf.DataGrid.DataGridControl;

        dataGrid.ClipboardExporters[DataFormats.UnicodeText].IncludeColumnHeaders = false;

        var currentRow = dataGrid.GetContainerFromItem(dataGrid.CurrentItem) as Xceed.Wpf.DataGrid.Row;
        if (currentRow == null) return;

        var currentCell = currentRow.Cells[dataGrid.CurrentColumn];
        if (currentCell != null && currentCell.HasContent)
        {
            Clipboard.SetText(currentCell.Content.ToString());
        }
    }

1 个答案:

答案 0 :(得分:0)

您正在创建一个新的命令和绑定,但您没有将其分配给DataGrid,因此DataGrid将继续使用它在CommandBindings集合中的命令。

您必须首先删除默认的“复制”命令,然后添加自己的命令。

例如:

<head>