我努力让NSTableView在MonoMac中工作(作为System.Windows.Forms.ListView的替代品),我很困惑为什么我的GetObjectData方法没有被调用。我已经进行了调试打印,并且" GetRowCount"我的NSTableViewSource中的方法被正确调用,但它永远不会成为GetObjectData。我得到一个具有正确行数的表,甚至是选择工作,但行中没有数据。 ReloadData也有效,因为还有另一个GetRowCount调用。
以下是代码:
public class MyTableViewSource : NSTableViewSource
{
//... (constructor, etc.)
public override int GetRowCount(NSTableView table)
{
Debug.Print ("NumberOfRowsInTableView = {0}", mSFList.RowCount);
return mSFList.RowCount;
}
// TODO: Why is this not being called!!!
public override NSObject GetObjectValue(NSTableView table, NSTableColumn col, int row)
{
Debug.Print ("Getting data for row {0}, column titled {1}", row, col.HeaderCell.Title);
// Get the column index.
int colIndex;
NSTableColumn[] cols = table.TableColumns();
for (colIndex = 0; colIndex < cols.Length; colIndex++)
if (cols[colIndex] == col) break;
if (colIndex >= cols.Length) return null;
return new NSString(mSFList[row,colIndex]);
}
我甚至尝试使用此导出功能,但我不知道我的字符串是否正确。
[Export("tableView:getObjectValue:forTableColumn:row:")]
public NSObject MyGetObjectValue(NSTableView table, NSTableColumn col, int row)
{
return GetObjectValue(table, col, row);
}
Debug输出始终非常一致:
NumberOfRowsInTableView = 2
有什么想法吗?我想知道我是否在XCode方面做了一切,但我没有把桌子弄得一团糟,我也不知道如何阻止这种方法。
Xamarin Studio 5.5,但我现在将Mono保留在3.8.0版本(3.10与我使用的某些Windows代码有问题)。
答案 0 :(得分:0)
继上面的评论之后,我重新尝试了整个设置,删除了旧表并插入了新表,现在它可以工作了。虽然我使用的是ObjectValueForTableColumn而不是getObjectValue。
我使用了以下link提供的步骤(致谢:Andrew J. Brehm)