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

时间:2017-09-25 14:00:40

标签: c# macos xamarin xamarin.mac

我对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)。

1 个答案:

答案 0 :(得分:1)

由于基于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)中,您将对整个应用进行剪切/复制/粘贴,因为NSMenuItem项目正在使用剪贴板的Cocoa选择器