Hi,
You can remove the default Copy and Paste bindings from the WorkbookView:
var copyBinding = workbookView.CommandBindings.Cast<CommandBinding>().Where(b => b.Command == ApplicationCommands.Copy).FirstOrDefault();
if (copyBinding != null)
workbookView.CommandBindings.Remove(copyBinding);
var pasteBinding = workbookView.CommandBindings.Cast<CommandBinding>().Where(b => b.Command == ApplicationCommands.Paste).FirstOrDefault();
if (pasteBinding != null)
workbookView.CommandBindings.Remove(pasteBinding);
Then replace them with your own:
workbookView.CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy, OnCopy, OnCanCopy));
workbookView.CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste, OnPaste, OnCanPaste));
In the OnCopy and OnPaste event handlers simply call the Copy/Paste methods above:
private void OnCanCopy(object sender, CanExecuteRoutedEventArgs e)
{
var activeSheet = workbookView.ActiveWorksheet;
e.CanExecute = activeSheet != null && !workbookView.Selection.IsEmpty;
}
private void OnCopy(object sender, ExecutedRoutedEventArgs e)
{
Copy();
}
private void OnCanPaste(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
private void OnPaste(object sender, ExecutedRoutedEventArgs e)
{
Paste();
}
Regards,
Meppy