我正在开发Xamarin Mac应用程序,目前正在创建新闻源列表。
我想要的是,当用户点击其中一行时,我会做一些事情(打开浏览器并显示完整的故事)。
以下是我的自定义单元格(行)的样子。
public class CustomLatestNewsCell : NSView
{
public NSText Title;
public NSText Date;
public NSText Details;
public CustomLatestNewsCell()
{
Title = new NSText();
Title.Frame = new CoreGraphics.CGRect(0, 120, 300, 70);
Title.TextColor = NSColor.FromSrgb((nfloat)0.207, (nfloat)0.576, (nfloat)0.639, (nfloat)1);
Title.Font = NSFont.UserFontOfSize(20);
Title.Editable = false;
Title.Selectable = false;
this.AddSubview(Title);
Date = new NSText();
Date.Frame = new CoreGraphics.CGRect(0, 25, 300, 30);
Date.TextColor = NSColor.FromSrgb((nfloat)0.702, (nfloat)0.702, (nfloat)0.702, (nfloat)1);
Date.Editable = false;
Date.Selectable = false;
this.AddSubview(Date);
Details = new NSText();
Details.Frame = new CoreGraphics.CGRect(310, 120, 550, 32);
Details.TextColor = NSColor.FromSrgb((nfloat)0.5, (nfloat)0.5, (nfloat)0.5, (nfloat)1);
Details.Editable = false;
Details.Selectable = false;
this.AddSubview(Details);
this.Frame = new CoreGraphics.CGRect(0, 0, 850, 150);
}
}
我尝试过很多东西,但似乎没有click / activated / somethingElse函数,当我点击单元格中的任何内容时会触发。唯一有效的是
public override void SelectionIsChanging(NSNotification notification)
{
var row = (NSTableView)notification.Object;
var selectedRow = row.SelectedRow;
if(selectedRow < 0)
return;
var selectedFeed = feed[(int)selectedRow];
row.DeselectAll(row);
NSWorkspace ws = new NSWorkspace();
NSError error = new NSError();
ws.OpenURL(new NSUrl(selectedFeed.Url),
NSWorkspaceLaunchOptions.AllowingClassicStartup,
new NSDictionary(),
out error);
}
但在这种情况下,用户必须点击一些&#34;空&#34;行的一部分。有没有办法点击单元格中的任何部分然后触发操作?
我对Mac开发很新,所以我现在很迷失