C# (如何)从<;编辑>;使用NSMenuItem复制到剪贴板

C# (如何)从<;编辑>;使用NSMenuItem复制到剪贴板,c#,macos,xamarin,xamarin.mac,C#,Macos,Xamarin,Xamarin.mac,我有一个关于MacOS的C#应用程序的问题 我有以下代码(在MainClass中): 在page.xaml中,我有一个编辑器标签: <Editor x:Name="editField" Text="Some Text" Margin="0" Grid.Row="1" Grid.Column="1"/> 所以,我的问题是: 当他们使用相同的解决方案时,如何使用代码的第一部分复制编辑器中的文本(

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

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

在page.xaml中,我有一个编辑器标签:

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

所以,我的问题是:


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

由于基于
macOS
Xamarin.Forms
”的应用程序没有主菜单(通常通过故事板/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
)中,您将拥有整个应用程序的剪切/复制/粘贴功能,因为
NSMenuItem
项正在使用剪贴板的Cocoa选择器。

非常感谢!这是可行的,我还必须使用ObjCRuntime添加
new Selector()
可以工作之前执行code>。但还是要感谢:)@RaymonJansen没问题,happy
Xamarin.Mac
coding
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;