(如何)使用 NSMenuItem 将文本从 <editor> 复制到剪贴板

(How to) Copying text from an <editor> to Clipboard using NSMenuItem

我有一个关于 MacOS 的 C# 应用程序的问题。

我有以下代码(在 MainClass 中):

NSMenuItem copyMenuItem = new NSMenuItem(title: "Copy", charCode: "c", handler: delegate
{
     //Has to be code       
});

并且在 page.xaml 我有一个编辑器标签:

<Editor x:Name="editField" 
          Text="Some Text" 
          Margin="0" 
          Grid.Row="1" 
          Grid.Column="1"/>

那么,我的问题是:

当他们使用相同的解决方案时,我如何使用代码的第一部分将编辑器中的文本复制(到剪贴板)? (NSMenuItem).

由于基于 macOS Xamarin.Forms' 的应用程序没有主菜单(通常通过 Storyboard / xib 提供),您需要构建整个菜单链:

var mainMenu = new NSMenu();

var appMenuItem = new NSMenuItem();
mainMenu.AddItem(appMenuItem);

var editMenuItem = new NSMenuItem();
mainMenu.AddItem(editMenuItem);

var editSubMenu = new NSMenu("Edit");
editSubMenu.SetSubmenu(editSubMenu, editMenuItem);

var cutMenuItem = new NSMenuItem("Cut", new Selector("cut:"), "x");
editSubMenu.AddItem(cutMenuItem);

var copyMenuItem = new NSMenuItem("Copy", new Selector("copy:"), "c");
editSubMenu.AddItem(copyMenuItem);

var pasteMenuItem = new NSMenuItem("Paste", new Selector("paste:"), "v");
editSubMenu.AddItem(pasteMenuItem);

NSApplication.SharedApplication.MainMenu = mainMenu;

将其放入您的 AppDelegate(构造函数或 DidFinishLaunching)中,您的整个应用程序将拥有 Cut/Copy/Paste,因为 NSMenuItem 项目正在使用 Cocoa 剪贴板选择器。