我正在尝试将C#Windows应用程序移植到Mac,但我不得不尝试用一堆字符串填充表格视图。表视图似乎有两列,这对我有好处,但我不知道如何访问单元格,行,列或添加项目。在Windows中,我做了类似的事情:
foreach(var item in items)
{
somelistbox.Items.Add(item)
}
我在Xamarin可以做些什么?我是否需要另一个视图才能添加到表格视图?
答案 0 :(得分:3)
您需要为表创建NSTableViewDataSource。通常,您将创建自己的自定义类,该类继承自NSTableViewDataSource,然后覆盖这些方法
您将自定义Source类的实例分配给TableView的DataSource属性。您的DataSource可能会根据您的数据填充一些内部数据结构(即List,或更复杂的内容)。然后,您将自定义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);
}