我正在尝试将 C# Windows 应用程序移植到 Mac,但我试图用一堆字符串填充表格视图。表格视图似乎带有两列,这对我有好处,但我不知道如何访问单元格、行、列或添加项目。在 Windows 中,我做了类似的事情:
foreach(var item in items)
{
somelistbox.Items.Add(item)
}
我可以在 Xamarin 中做什么?我需要另一个视图来添加到表视图吗?
您需要为您的表创建一个 NSTableViewDataSource。通常你会创建你自己的继承自 NSTableViewDataSource 的自定义类,然后重写这些方法
您将自定义 Source 类的实例分配给 TableView 的 DataSource 属性。您的 DataSource 可能会有一些内部数据结构(即,一个列表,或更复杂的东西),您可以根据您的数据填充这些数据结构。然后,您将自定义 DataSource 方法以根据数据的长度等做出适当的响应。
假设您的数据是一个简单的字符串[]:
// populate this in constructor, via service, setter, etc - whatever makes sense
private string[] data;
// how many rows are in the table
public int NumberOfRowsInTableView(NSTableView table)
{
return data.length;
}
// what to draw in the table
public NSObject ObjectValueForTableColumn (NSTableView table, NSTableColumn col, int row)
{
// assume you've setup your tableview in IB with two columns, "Index" and "Value"
string text = string.Empty;
if (col.HeaderCell.Title == "Index") {
text = row.ToString();
} else {
text = data [row];
}
return new NSString (text);
}