2017-09-25 42 views
3

我对MacOS的C#应用​​程序有疑问。(How to)使用NSMenuItem将文本从<editor>复制到剪贴板

我有以下代码(在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

由于macOSXamarin.Forms“基于应用程序没有主菜单(通常是通过一个情节提要/厦门国际银行提供的),你需要构建整个菜单链:

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选择器作为剪贴板。

+0

非常感谢!这有效,我还必须在'new Selector()'工作之前添加'使用ObjCRuntime;'。但仍然感谢:) –

+0

@RaymonJansen没问题,快乐'Xamarin.Mac'编码 – SushiHangover