用户控件上的 WPF 剪切、复制、粘贴功能

kev*_*ev3 2 c# wpf user-controls

我有一个画布,您可以在其上添加 UserControls(由图像和文本框组成)

我试图在这些 UserControl 上实现剪切、复制、粘贴功能,因此上下文菜单附加到处理图像的 UserControl 上。用户右键单击此处并从上下文菜单中选择副本,例如我将如何实施以便他们可以将其粘贴到画布上。

谁能指出我正确的方向...

nmc*_*ean 5

这可以通过 RoutedCommands 来完成。完整概述位于 MSDN:命令概述

简短的版本是这样的:当命令源(即菜单项)想要执行命令时,会引发一个事件。该事件由最近的命令绑定处理。剪切/复制/粘贴命令已经包含在 WPF 中,并且某些元素(即文本框)已经包含它们的命令绑定。

您可以像这样定义菜单项:

<MenuItem Header="Copy" Command="ApplicationCommands.Copy" />
Run Code Online (Sandbox Code Playgroud)

并向 UserControl 添加命令绑定,如下所示:

<UserControl.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Copy"
                    Executed="Copy_Executed" />
</UserControl.CommandBindings>
Run Code Online (Sandbox Code Playgroud)

并在 UserControl 的代码隐藏中定义Copy_Executed具有ExecutedRoutedEventHandler签名的方法。

然后当然ApplicationCommands.Paste在画布内做同样的事情。

是要在自己的应用程序中处理数据还是使用剪贴板取决于您。如果您正在处理图像,WPF 有一个Clipboard类可以与BitmapSource对象一起使用(如果您有一个Image元素,很可能它Source已经是 a BitmapSource)。